summaryrefslogtreecommitdiffstats
path: root/common/pipeline.h
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-06-10 15:28:06 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-06-10 15:28:06 +0200
commitce0feb3ef62c9438b0aedd601461cbb340faa021 (patch)
treea29643b36b5306decefb216b06071dab80d76ddf /common/pipeline.h
parent555c373a0c4dfe386dcd2c88ae9548d95e307409 (diff)
downloadsink-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.h17
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
91protected:
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
91private: 99private:
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