~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/default_replicator/default_replicator.h

* New serial event log plugin

Implemented in /plugin/serial_event_log/.

Adds a very simple serialized event log to the server.  This simple
applier takes Command messages and writes them to a log file as it
received them.  Nothing complex for right now.

* New default replicator plugin

This plugin is extremely simple and merely passes a received Command
message on to all registered Appliers (of which the new serial event
log is one of those appliers)

The plugin is disabled by default.  It can be enabled on startup
with --default-replicator-enable.

* New command reader test program

There is a new test program in /drizzled/message/ which is similar to
the transaction_reader program but can read single Command messages, 
and not Transaction messages which contain a vector of Command messages.

* New serial_event_log test suite

The test case is very simple right now, but serves to show how plugin
test suites can be written, and how test programs in the server source
tree can be used in the drizzletest program language.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* - mode: c; c-basic-offset: 2; indent-tabs-mode: nil; -*-
 
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
 
3
 *
 
4
 *  Copyright (C) 2008-2009 Sun Microsystems
 
5
 *
 
6
 *  This program is free software; you can redistribute it and/or modify
 
7
 *  it under the terms of the GNU General Public License as published by
 
8
 *  the Free Software Foundation; either version 2 of the License, or
 
9
 *  (at your option) any later version.
 
10
 *
 
11
 *  This program is distributed in the hope that it will be useful,
 
12
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
 *  GNU General Public License for more details.
 
15
 *
 
16
 *  You should have received a copy of the GNU General Public License
 
17
 *  along with this program; if not, write to the Free Software
 
18
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
19
 */
 
20
 
 
21
/**
 
22
 * @file
 
23
 *
 
24
 * Defines the API of the default serial event log.
 
25
 *
 
26
 * @see drizzled/plugin/replicator.h
 
27
 * @see drizzled/plugin/applier.h
 
28
 *
 
29
 * @details
 
30
 *
 
31
 * The SerialEventLog applies events it receives from the TransactionServices
 
32
 * server component to a simple log file on disk.
 
33
 * 
 
34
 * Events are received in no guaranteed order and the serial event log
 
35
 * is in charge of writing these events to the log as they are received.
 
36
 */
 
37
 
 
38
#ifndef DRIZZLE_PLUGIN_SERIAL_EVENT_LOG_H
 
39
#define DRIZZLE_PLUGIN_SERIAL_EVENT_LOG_H
 
40
 
 
41
#include <drizzled/server_includes.h>
 
42
#include <drizzled/atomics.h>
 
43
#include <drizzled/plugin/replicator.h>
 
44
#include <drizzled/plugin/applier.h>
 
45
 
 
46
#include <vector>
 
47
#include <string>
 
48
 
 
49
class DefaultReplicator: public drizzled::plugin::Replicator
 
50
{
 
51
public:
 
52
  DefaultReplicator() {}
 
53
 
 
54
  /** Destructor */
 
55
  ~DefaultReplicator() {}
 
56
  /**
 
57
   * Replicate a Command message to an Applier.
 
58
   *
 
59
   * @note
 
60
   *
 
61
   * It is important to note that memory allocation for the 
 
62
   * supplied pointer is not guaranteed after the completion 
 
63
   * of this function -- meaning the caller can dispose of the
 
64
   * supplied message.  Therefore, replicators and appliers 
 
65
   * implementing an asynchronous replication system must copy
 
66
   * the supplied message to their own controlled memory storage
 
67
   * area.
 
68
   *
 
69
   * @param Command message to be replicated
 
70
   */
 
71
  void replicate(drizzled::plugin::Applier *in_applier, drizzled::message::Command *to_replicate);
 
72
  
 
73
  /** 
 
74
   * Returns whether the default replicator is active.
 
75
   */
 
76
  bool isActive();
 
77
};
 
78
 
 
79
#endif /* DRIZZLE_PLUGIN_SERIAL_EVENT_LOG_H */