CatapultServer  v0.5.0.1 (Elephant)
MongoTransactionPlugin.h
Go to the documentation of this file.
1 
21 #pragma once
24 #include "catapult/plugins.h"
25 #include <bsoncxx/builder/stream/document.hpp>
26 #include <mongocxx/client.hpp>
27 
28 namespace catapult {
29  namespace model {
30  struct EmbeddedTransaction;
31  struct Transaction;
32  }
33 }
34 
35 namespace catapult { namespace mongo {
36 
38  template<typename TTransaction>
40  public:
41  virtual ~MongoTransactionPluginT() = default;
42 
43  public:
45  virtual model::EntityType type() const = 0;
46 
48  virtual void streamTransaction(bsoncxx::builder::stream::document& builder, const TTransaction& transaction) const = 0;
49  };
50 
52  class EmbeddedMongoTransactionPlugin : public MongoTransactionPluginT<model::EmbeddedTransaction> {};
53 
55  class MongoTransactionPlugin : public MongoTransactionPluginT<model::Transaction> {
56  public:
59  virtual std::vector<bsoncxx::document::value> extractDependentDocuments(
60  const model::Transaction& transaction,
61  const MongoTransactionMetadata& metadata) const = 0;
62 
64  virtual bool supportsEmbedding() const = 0;
65 
67  virtual const EmbeddedMongoTransactionPlugin& embeddedPlugin() const = 0;
68  };
69 
71  class MongoTransactionRegistry : public model::TransactionRegistryT<MongoTransactionPlugin> {};
72 }}
catapult::mongo::MongoTransactionMetadata
Mongo transaction metadata.
Definition: MongoTransactionMetadata.h:31
catapult::mongo::MongoTransactionRegistry
A registry of mongo transaction plugins.
Definition: MongoTransactionPlugin.h:71
catapult::mongo::MongoTransactionPluginT
A typed mongo transaction plugin.
Definition: MongoTransactionPlugin.h:39
catapult::model::EntityType
EntityType
Enumeration of entity types.
Definition: EntityType.h:43
catapult::mongo::MongoTransactionPlugin::supportsEmbedding
virtual bool supportsEmbedding() const =0
true if this transaction type supports embedding.
catapult::model::TransactionRegistryT
A registry of transaction plugins.
Definition: TransactionRegistry.h:29
TransactionRegistry.h
catapult::mongo::MongoTransactionPluginT::streamTransaction
virtual void streamTransaction(bsoncxx::builder::stream::document &builder, const TTransaction &transaction) const =0
Streams a transaction to builder.
catapult::mongo::EmbeddedMongoTransactionPlugin
An embedded mongo transaction plugin.
Definition: MongoTransactionPlugin.h:52
plugins.h
MongoTransactionMetadata.h
catapult::mongo::MongoTransactionPluginT::~MongoTransactionPluginT
virtual ~MongoTransactionPluginT()=default
catapult::mongo::MongoTransactionPlugin::extractDependentDocuments
virtual std::vector< bsoncxx::document::value > extractDependentDocuments(const model::Transaction &transaction, const MongoTransactionMetadata &metadata) const =0
catapult::mongo::MongoTransactionPluginT::type
virtual model::EntityType type() const =0
Gets the transaction entity type.
catapult
Definition: AddressExtractionExtension.cpp:28
catapult::mongo::MongoTransactionPlugin
A mongo transaction plugin.
Definition: MongoTransactionPlugin.h:55
catapult::model::BasicEntityType::Transaction
Transaction type.
catapult::mongo::MongoTransactionPlugin::embeddedPlugin
virtual const EmbeddedMongoTransactionPlugin & embeddedPlugin() const =0
Gets the corresponding embedded plugin if supportsEmbedding() is true.
catapult::model::Transaction
Binary layout for a transaction.
Definition: Transaction.h:32