Changeset View
Changeset View
Standalone View
Standalone View
src/server/storage/itemretrievalmanager.h
Show First 20 Lines • Show All 49 Lines • ▼ Show 20 Line(s) | |||||
50 | }; | 50 | }; | ||
51 | 51 | | |||
52 | /** Manages and processes item retrieval requests. */ | 52 | /** Manages and processes item retrieval requests. */ | ||
53 | class ItemRetrievalManager : public AkThread | 53 | class ItemRetrievalManager : public AkThread | ||
54 | { | 54 | { | ||
55 | Q_OBJECT | 55 | Q_OBJECT | ||
56 | public: | 56 | public: | ||
57 | explicit ItemRetrievalManager(QObject *parent = nullptr); | 57 | explicit ItemRetrievalManager(QObject *parent = nullptr); | ||
58 | explicit ItemRetrievalManager(AbstractItemRetrievalJobFactory *factory, QObject *parent = nullptr); | 58 | explicit ItemRetrievalManager(std::unique_ptr<AbstractItemRetrievalJobFactory> factory, QObject *parent = nullptr); | ||
59 | ~ItemRetrievalManager() override; | 59 | ~ItemRetrievalManager() override; | ||
60 | 60 | | |||
61 | /** | 61 | /** | ||
62 | * Added for convenience. ItemRetrievalManager takes ownership over the | 62 | * Added for convenience. ItemRetrievalManager takes ownership over the | ||
63 | * pointer and deletes it when the request is processed. | 63 | * pointer and deletes it when the request is processed. | ||
64 | */ | 64 | */ | ||
65 | virtual void requestItemDelivery(ItemRetrievalRequest *request); | 65 | virtual void requestItemDelivery(ItemRetrievalRequest *request); | ||
66 | 66 | | |||
Show All 13 Lines | 76 | private Q_SLOTS: | |||
80 | void processRequest(); | 80 | void processRequest(); | ||
81 | void triggerCollectionSync(const QString &resource, qint64 colId); | 81 | void triggerCollectionSync(const QString &resource, qint64 colId); | ||
82 | void triggerCollectionTreeSync(const QString &resource); | 82 | void triggerCollectionTreeSync(const QString &resource); | ||
83 | void retrievalJobFinished(ItemRetrievalRequest *request, const QString &errorMsg); | 83 | void retrievalJobFinished(ItemRetrievalRequest *request, const QString &errorMsg); | ||
84 | 84 | | |||
85 | protected: | 85 | protected: | ||
86 | static ItemRetrievalManager *sInstance; | 86 | static ItemRetrievalManager *sInstance; | ||
87 | 87 | | |||
88 | AbstractItemRetrievalJobFactory *mJobFactory = nullptr; | 88 | std::unique_ptr<AbstractItemRetrievalJobFactory> mJobFactory; | ||
89 | 89 | | |||
90 | /// Protects mPendingRequests and every Request object posted to it | 90 | /// Protects mPendingRequests and every Request object posted to it | ||
91 | QReadWriteLock *mLock = nullptr; | 91 | QReadWriteLock *mLock = nullptr; | ||
92 | /// Used to let requesting threads wait until the request has been processed | 92 | /// Used to let requesting threads wait until the request has been processed | ||
93 | QWaitCondition *mWaitCondition = nullptr; | 93 | QWaitCondition *mWaitCondition = nullptr; | ||
94 | /// Pending requests queues, one per resource | 94 | /// Pending requests queues, one per resource | ||
95 | QHash<QString, QList<ItemRetrievalRequest *> > mPendingRequests; | 95 | QHash<QString, QList<ItemRetrievalRequest *> > mPendingRequests; | ||
96 | /// Currently running jobs, one per resource | 96 | /// Currently running jobs, one per resource | ||
Show All 10 Lines |