00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #pragma once
00026
00027 #include <drizzled/plugin/replication.h>
00028 #include <drizzled/plugin/plugin.h>
00029
00030 #include <drizzled/visibility.h>
00031
00041 namespace drizzled
00042 {
00043 namespace message
00044 {
00045 class Transaction;
00046 class Statement;
00047 }
00048
00049 class Session;
00050
00051 namespace plugin
00052 {
00053
00054 class TransactionApplier;
00055
00059 class DRIZZLED_API TransactionReplicator : public Plugin
00060 {
00061 TransactionReplicator();
00062 TransactionReplicator(const TransactionReplicator &);
00063 TransactionReplicator& operator=(const TransactionReplicator &);
00064 public:
00065 explicit TransactionReplicator(std::string name_arg)
00066 : Plugin(name_arg, "TransactionReplicator")
00067 {
00068 }
00069 virtual ~TransactionReplicator() {}
00070
00087 virtual ReplicationReturnCode replicate(TransactionApplier *in_applier,
00088 Session &session,
00089 message::Transaction &to_replicate)= 0;
00090 static bool addPlugin(TransactionReplicator *replicator);
00091 static void removePlugin(TransactionReplicator *replicator);
00092 };
00093
00094 }
00095 }
00096