~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/replication_services.h

  • Committer: Monty Taylor
  • Date: 2009-12-05 08:42:31 UTC
  • mfrom: (1237.2.12 push)
  • mto: (1238.1.6 push)
  • mto: This revision was merged to the branch mainline in revision 1240.
  • Revision ID: mordred@inaugust.com-20091205084231-j6h9ct4n6eavvol9
Merged with trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
63
63
    TRANSACTION= 1, /* A GPB Transaction Message */
64
64
    BLOB= 2 /* A BLOB value */
65
65
  };
 
66
  typedef std::vector<plugin::TransactionReplicator *> Replicators;
 
67
  typedef std::vector<plugin::TransactionApplier *> Appliers;
66
68
private:
67
69
  /** 
68
70
   * Atomic boolean set to true if any *active* replicators
75
77
   */
76
78
  atomic<uint64_t> last_applied_timestamp;
77
79
  /** Our collection of replicator plugins */
78
 
  std::vector<drizzled::plugin::TransactionReplicator *> replicators;
 
80
  Replicators replicators;
79
81
  /** Our collection of applier plugins */
80
 
  std::vector<drizzled::plugin::TransactionApplier *> appliers;
 
82
  Appliers appliers;
81
83
  /**
82
84
   * Helper method which is called after any change in the
83
85
   * registered appliers or replicators to evaluate whether
119
121
  void cleanupTransaction(message::Transaction *in_transaction,
120
122
                          Session *in_session) const;
121
123
  /**
 
124
   * Returns true if the transaction contains any Statement
 
125
   * messages which are not end segments (i.e. a bulk statement has
 
126
   * previously been sent to replicators).
 
127
   *
 
128
   * @param The transaction to check
 
129
   */
 
130
  bool transactionContainsBulkSegment(const drizzled::message::Transaction &transaction) const;
 
131
  /**
122
132
   * Helper method which initializes a Statement message
123
133
   *
124
134
   * @param The statement to initialize
256
266
   */
257
267
  void detachApplier(drizzled::plugin::TransactionApplier *in_applier);
258
268
  /**
259
 
   * Creates a new Transaction GPB message and attaches the message
260
 
   * to the supplied session object.
261
 
   *
262
 
   * @note
263
 
   *
264
 
   * This method is called when a "normal" transaction -- i.e. an 
265
 
   * explicitly-started transaction from a client -- is started with 
266
 
   * BEGIN or START TRANSACTION.
267
 
   *
268
 
   * @param Pointer to the Session starting the transaction
269
 
   */
270
 
  void startNormalTransaction(Session *in_session);
271
 
  /**
272
269
   * Commits a normal transaction (see above) and pushes the
273
270
   * transaction message out to the replicators.
274
271
   *
275
272
   * @param Pointer to the Session committing the transaction
276
273
   */
277
 
  void commitNormalTransaction(Session *in_session);
 
274
  void commitTransaction(Session *in_session);
278
275
  /**
279
276
   * Marks the current active transaction message as being rolled
280
277
   * back and pushes the transaction message out to replicators.
321
318
   */
322
319
  void deleteRecord(Session *in_session, Table *in_table);
323
320
  /**
 
321
   * Creates a TruncateTable Statement GPB message and add it
 
322
   * to the Session's active Transaction GPB message for pushing
 
323
   * out to the replicator streams.
 
324
   *
 
325
   * @param[in] Pointer to the Session which issued the statement
 
326
   * @param[in] The Table being truncated
 
327
   */
 
328
  void truncateTable(Session *in_session, Table *in_table);
 
329
  /**
324
330
   * Creates a new RawSql GPB message and pushes it to 
325
331
   * replicators.
326
332
   *