CatapultServer
v0.5.0.1 (Elephant)
|
Go to the documentation of this file.
25 namespace catapult {
namespace mongo {
35 template<
typename TEmbeddedTransaction,
typename TStreamEmbeddedFunc>
36 static std::unique_ptr<EmbeddedTransactionPlugin>
CreateEmbedded(TStreamEmbeddedFunc streamEmbeddedFunc) {
37 return std::make_unique<EmbeddedTransactionPluginT<TEmbeddedTransaction>>(streamEmbeddedFunc);
41 template<
typename TTransaction,
typename TEmbeddedTransaction,
typename TStreamFunc,
typename TStreamEmbeddedFunc>
42 static std::unique_ptr<TransactionPlugin>
Create(TStreamFunc streamFunc, TStreamEmbeddedFunc streamEmbeddedFunc) {
43 return std::make_unique<TransactionPluginT<TTransaction, TEmbeddedTransaction>>(streamFunc, streamEmbeddedFunc);
47 template<
typename TTransaction,
typename TDerivedTransaction,
typename TPlugin>
58 return TDerivedTransaction::Entity_Type;
61 void streamTransaction(bsoncxx::builder::stream::document& builder,
const TTransaction& transaction)
const override {
62 m_streamFunc(builder, static_cast<const TDerivedTransaction&>(transaction));
69 template<
typename TEmbeddedTransaction>
75 template<
typename TTransaction,
typename TEmbeddedTransaction>
78 template<
typename TStreamFunc,
typename TStreamEmbeddedFunc>
106 #define DEFINE_MONGO_TRANSACTION_PLUGIN_FACTORY(NAME, STREAM) \
107 std::unique_ptr<MongoTransactionPlugin> Create##NAME##TransactionMongoPlugin() { \
108 return MongoTransactionPluginFactory::Create<model::NAME##Transaction, model::Embedded##NAME##Transaction>( \
109 STREAM<model::NAME##Transaction>, \
110 STREAM<model::Embedded##NAME##Transaction>); \
std::unique_ptr< EmbeddedTransactionPlugin > m_pEmbeddedTransactionPlugin
Definition: MongoTransactionPluginFactory.h:101
Factory for creating mongo transaction plugins.
Definition: MongoTransactionPluginFactory.h:28
static std::unique_ptr< TransactionPlugin > Create(TStreamFunc streamFunc, TStreamEmbeddedFunc streamEmbeddedFunc)
Creates a transaction plugin that supports embedding around streamFunc and streamEmbeddedFunc.
Definition: MongoTransactionPluginFactory.h:42
Definition: MongoTransactionPluginFactory.h:76
Definition: MongoTransactionPluginFactory.h:48
static std::unique_ptr< EmbeddedTransactionPlugin > CreateEmbedded(TStreamEmbeddedFunc streamEmbeddedFunc)
Creates an embedded transaction plugin around streamEmbeddedFunc.
Definition: MongoTransactionPluginFactory.h:36
EntityType
Enumeration of entity types.
Definition: EntityType.h:43
void streamTransaction(bsoncxx::builder::stream::document &builder, const TTransaction &transaction) const override
Definition: MongoTransactionPluginFactory.h:61
An embedded mongo transaction plugin.
Definition: MongoTransactionPlugin.h:52
model::EntityType type() const override
Definition: MongoTransactionPluginFactory.h:57
TransactionPluginT(TStreamFunc streamFunc, TStreamEmbeddedFunc streamEmbeddedFunc)
Definition: MongoTransactionPluginFactory.h:79
std::vector< bsoncxx::document::value > extractDependentDocuments(const model::Transaction &, const MongoTransactionMetadata &) const override
Definition: MongoTransactionPluginFactory.h:85
BasicTransactionPluginT(const StreamFunc &streamFunc)
Definition: MongoTransactionPluginFactory.h:53
const EmbeddedTransactionPlugin & embeddedPlugin() const override
Gets the corresponding embedded plugin if supportsEmbedding() is true.
Definition: MongoTransactionPluginFactory.h:96
StreamFunc m_streamFunc
Definition: MongoTransactionPluginFactory.h:66
consumer< bsoncxx::builder::stream::document &, const TTransaction & > StreamFunc
Definition: MongoTransactionPluginFactory.h:50
Binary layout for an embedded transaction (non-verifiable).
Definition: EmbeddedTransaction.h:38
Definition: AddressExtractionExtension.cpp:28
A mongo transaction plugin.
Definition: MongoTransactionPlugin.h:55
std::function< void(TArgs...)> consumer
A consumer function.
Definition: functions.h:35
bool supportsEmbedding() const override
true if this transaction type supports embedding.
Definition: MongoTransactionPluginFactory.h:92
Binary layout for a transaction.
Definition: Transaction.h:32