67
69
TRANSACTION= 1, /* A GPB Transaction Message */
68
70
BLOB= 2 /* A BLOB value */
70
typedef std::vector<plugin::TransactionReplicator *> Replicators;
71
typedef std::vector<plugin::TransactionApplier *> Appliers;
74
* Atomic boolean set to true if any *active* replicators
75
* or appliers are actually registered.
77
atomic<bool> is_active;
79
* The timestamp of the last time a Transaction message was successfully
80
* applied (sent to an Applier)
82
atomic<uint64_t> last_applied_timestamp;
83
/** Our collection of replicator plugins */
84
Replicators replicators;
85
/** Our collection of applier plugins */
88
* Helper method which is called after any change in the
89
* registered appliers or replicators to evaluate whether
90
* any remaining plugins are actually active.
92
* This method properly sets the is_active member variable.
94
void evaluateActivePlugins();
72
typedef std::pair<plugin::TransactionReplicator *, plugin::TransactionApplier *> ReplicationPair;
73
typedef std::vector<ReplicationPair> ReplicationStreams;
75
* Method which is called after plugins have been loaded but
76
* before the first client connects. It determines if the registration
77
* of applier and replicator plugins is proper and pairs
78
* the applier and requested replicator plugins into the replication
83
* This is only necessary because we don't yet have plugin dependency
86
bool evaluateRegisteredPlugins();
97
88
* Helper method which pushes a constructed message out to the registered
98
89
* replicator and applier plugins.
130
127
* @param Pointer to a replicator to attach/register
132
129
void attachReplicator(plugin::TransactionReplicator *in_replicator);
134
132
* Detaches/unregisters a replicator with our internal
135
133
* collection of replicators.
137
135
* @param Pointer to the replicator to detach
139
137
void detachReplicator(plugin::TransactionReplicator *in_replicator);
141
140
* Attaches a applier to our internal collection of
144
143
* @param Pointer to a applier to attach/register
144
* @param The name of the replicator to pair with
146
void attachApplier(plugin::TransactionApplier *in_applier);
146
void attachApplier(plugin::TransactionApplier *in_applier, const std::string &requested_replicator);
148
149
* Detaches/unregisters a applier with our internal
149
150
* collection of appliers.
151
152
* @param Pointer to the applier to detach
153
154
void detachApplier(plugin::TransactionApplier *in_applier);
154
/** Returns the timestamp of the last Transaction which was sent to an
157
* Returns the timestamp of the last Transaction which was sent to an
157
160
uint64_t getLastAppliedTimestamp() const;
162
typedef std::vector<plugin::TransactionReplicator *> Replicators;
163
typedef std::vector<std::pair<std::string, plugin::TransactionApplier *> > Appliers;
165
* Atomic boolean set to true if any *active* replicators
166
* or appliers are actually registered.
170
* The timestamp of the last time a Transaction message was successfully
171
* applied (sent to an Applier)
173
atomic<uint64_t> last_applied_timestamp;
174
/** Our collection of registered replicator plugins */
175
Replicators replicators;
176
/** Our collection of registered applier plugins and their requested replicator plugin names */
178
/** Our replication streams */
179
ReplicationStreams replication_streams;
181
* Strips underscores and lowercases supplied replicator name
182
* or requested name, and appends the suffix "replicator" if missing...
184
void normalizeReplicatorName(std::string &name);
160
187
} /* namespace drizzled */