| #pragma once |
| |
| #ifndef TCACHERESOURCEPOOL_INCLUDED |
| #define TCACHERESOURCEPOOL_INCLUDED |
| |
| #include "tcommon.h" |
| #include "tfilepath.h" |
| |
| #include "tcacheresource.h" |
| |
| #include <QString> |
| #include <QSettings> |
| #include <QMutex> |
| |
| #undef DVAPI |
| #undef DVVAR |
| #ifdef TFX_EXPORTS |
| #define DVAPI DV_EXPORT_API |
| #define DVVAR DV_EXPORT_VAR |
| #else |
| #define DVAPI DV_IMPORT_API |
| #define DVVAR DV_IMPORT_VAR |
| #endif |
| |
| |
| |
| class THDCacheResourcePool; |
| class TCacheResource; |
| class TFilePath; |
| |
| |
| |
| class DVAPI TCacheResourcePool final : public QObject { |
| Q_OBJECT |
| |
| THDCacheResourcePool *m_hdPool; |
| TFilePath m_path; |
| |
| typedef std::map<std::string, TCacheResource *> MemResources; |
| MemResources m_memResources; |
| QMutex m_memMutex; |
| |
| unsigned int m_searchCount; |
| bool m_foundIterator; |
| MemResources::iterator m_searchIterator; |
| |
| TCacheResourcePool(); |
| ~TCacheResourcePool(); |
| |
| public: |
| |
| |
| static TCacheResourcePool *instance(); |
| |
| void setPath(QString cacheRoot, QString projectName, QString sceneName); |
| const TFilePath &getPath() const; |
| void reset(); |
| |
| void beginCachedSearch(); |
| void endCachedSearch(); |
| |
| public: |
| |
| |
| void flushResources(); |
| |
| unsigned int getCurrentSize() const; |
| unsigned int getSizeAccessedAfterDays(int days) const; |
| |
| void clear(); |
| void clear(QString cacheRoot, QString projectName, QString sceneName); |
| |
| void clearKeyword(const std::string &keyword); |
| |
| void addReference(TCacheResourceP resource, QString flag); |
| void releaseReference(TCacheResourceP resource, QString flag); |
| void releaseReferences(QString flag); |
| |
| void clearFxResources(std::wstring fxId); |
| |
| void clearAccessedUpToSize(int MB); |
| void clearAccessedAfterDays(int days); |
| void clearAccessedAfterSessions(int sessionsCount); |
| |
| |
| |
| void setMaximumSize(int MB); |
| int getMaximumSize() const; |
| |
| void setResourcesAccessTimeOut(int days); |
| int getResourcesAccessTimeOut() const; |
| |
| |
| |
| private: |
| |
| |
| friend class TCacheResource; |
| friend class TCacheResourceP; |
| |
| TCacheResource *getResource(const std::string &name, bool createIfNone); |
| void releaseResource(TCacheResource *resource); |
| |
| void invalidateAll(); |
| |
| private: |
| |
| |
| bool isHDActive(); |
| void startBacking(TCacheResource *resource); |
| void saveResourceInfos(TCacheResource *resource); |
| void touchBackingPath(TCacheResource *resource); |
| QString getPoolRoot(QString cacheRoot, QString projectName, |
| QString sceneName); |
| void clearResource(QString path); |
| }; |
| |
| #endif |