diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-06-10 15:28:06 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-06-10 15:28:06 +0200 |
commit | ce0feb3ef62c9438b0aedd601461cbb340faa021 (patch) | |
tree | a29643b36b5306decefb216b06071dab80d76ddf /common/pipeline.h | |
parent | 555c373a0c4dfe386dcd2c88ae9548d95e307409 (diff) | |
download | sink-ce0feb3ef62c9438b0aedd601461cbb340faa021.tar.gz sink-ce0feb3ef62c9438b0aedd601461cbb340faa021.zip |
Allow preprocessors to inject entities.
Currently only working when creating an entity, the new entity is
always preprended in the store.
Diffstat (limited to 'common/pipeline.h')
-rw-r--r-- | common/pipeline.h | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/common/pipeline.h b/common/pipeline.h index 2ca87a4..c3abcf6 100644 --- a/common/pipeline.h +++ b/common/pipeline.h | |||
@@ -82,15 +82,26 @@ public: | |||
82 | virtual ~Preprocessor(); | 82 | virtual ~Preprocessor(); |
83 | 83 | ||
84 | virtual void startBatch(); | 84 | virtual void startBatch(); |
85 | virtual void newEntity(const QByteArray &key, qint64 revision, Sink::ApplicationDomain::BufferAdaptor &newEntity, Sink::Storage::Transaction &transaction) = 0; | 85 | virtual void newEntity(const QByteArray &key, qint64 revision, Sink::ApplicationDomain::BufferAdaptor &newEntity, Sink::Storage::Transaction &transaction) {}; |
86 | virtual void modifiedEntity(const QByteArray &key, qint64 revision, const Sink::ApplicationDomain::BufferAdaptor &oldEntity, | 86 | virtual void modifiedEntity(const QByteArray &key, qint64 revision, const Sink::ApplicationDomain::BufferAdaptor &oldEntity, |
87 | Sink::ApplicationDomain::BufferAdaptor &newEntity, Sink::Storage::Transaction &transaction) = 0; | 87 | Sink::ApplicationDomain::BufferAdaptor &newEntity, Sink::Storage::Transaction &transaction) {}; |
88 | virtual void deletedEntity(const QByteArray &key, qint64 revision, const Sink::ApplicationDomain::BufferAdaptor &oldEntity, Sink::Storage::Transaction &transaction) = 0; | 88 | virtual void deletedEntity(const QByteArray &key, qint64 revision, const Sink::ApplicationDomain::BufferAdaptor &oldEntity, Sink::Storage::Transaction &transaction) {}; |
89 | virtual void finalize(); | 89 | virtual void finalize(); |
90 | 90 | ||
91 | protected: | ||
92 | template <typename DomainType> | ||
93 | void createEntity(const DomainType &entity) | ||
94 | { | ||
95 | createEntity(entity, Sink::ApplicationDomain::getTypeName<DomainType>()); | ||
96 | } | ||
97 | void createEntity(const Sink::ApplicationDomain::ApplicationDomainType &entity, const QByteArray &type); | ||
98 | |||
91 | private: | 99 | private: |
100 | friend class Pipeline; | ||
92 | class Private; | 101 | class Private; |
93 | Private *const d; | 102 | Private *const d; |
103 | Pipeline *pipeline; | ||
104 | QByteArray resourceType; | ||
94 | }; | 105 | }; |
95 | 106 | ||
96 | } // namespace Sink | 107 | } // namespace Sink |