123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- /*=============================================================================
- Library: CTK
- Copyright (c) German Cancer Research Center,
- Division of Medical and Biological Informatics
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- =============================================================================*/
- #ifndef CTKBASICLOCATION_H
- #define CTKBASICLOCATION_H
- #include <service/datalocation/ctkLocation.h>
- #include <QUrl>
- #include <QString>
- #include <QFileInfo>
- #include <QReadWriteLock>
- class ctkBasicLocation : public QObject, public ctkLocation
- {
- Q_OBJECT
- Q_INTERFACES(ctkLocation)
- public:
- ctkBasicLocation(const QString& property, const QUrl& defaultValue,
- bool isReadOnly, const QString& dataAreaPrefix);
- ~ctkBasicLocation();
- bool allowsDefault() const;
- QUrl getDefault() const;
- ctkLocation* getParentLocation() const;
- QUrl getUrl() const;
- bool isSet() const;
- bool isReadOnly() const;
- bool set(const QUrl& value, bool lock);
- bool set(const QUrl& value, bool lock, const QString& lockFilePath);
- bool lock();
- void release();
- bool isLocked() const;
- ctkLocation* createLocation(ctkLocation* parent, const QUrl& defaultValue, bool readonly);
- QUrl getDataArea(const QString& path) const;
- void setParent(ctkLocation* parent);
- struct Locker;
- private:
- struct MockLocker;
- class FileLocker;
- bool m_isReadOnly;
- QUrl m_location;
- QScopedPointer<ctkLocation> m_parent;
- QUrl m_defaultValue;
- QString m_property;
- QString m_dataAreaPrefix;
- // locking related fields
- QFileInfo m_lockFile;
- Locker* m_locker;
- mutable QReadWriteLock m_sync;
- bool isSet_unlocked() const;
- bool set_unlocked(const QUrl& value, bool lock);
- bool set_unlocked(const QUrl& value, bool lock, const QString& lockFilePath);
- bool lock_unlocked(const QFileInfo& lock, const QUrl& locationValue);
- void setLocker_unlocked(const QFileInfo& lock);
- Locker* createLocker_unlocked(const QFileInfo& lock, const QString& lockMode);
- bool isLocked_unlocked(const QFileInfo& lock) const;
- };
- #endif // CTKBASICLOCATION_H
|