summaryrefslogtreecommitdiff
path: root/storage/ndb/src/old_files/rep/repapi/repapi.h
diff options
context:
space:
mode:
Diffstat (limited to 'storage/ndb/src/old_files/rep/repapi/repapi.h')
-rw-r--r--storage/ndb/src/old_files/rep/repapi/repapi.h216
1 files changed, 216 insertions, 0 deletions
diff --git a/storage/ndb/src/old_files/rep/repapi/repapi.h b/storage/ndb/src/old_files/rep/repapi/repapi.h
new file mode 100644
index 00000000000..170e493cd86
--- /dev/null
+++ b/storage/ndb/src/old_files/rep/repapi/repapi.h
@@ -0,0 +1,216 @@
+/* Copyright (C) 2003 MySQL AB
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+
+#ifndef REPAPI_H
+#define REPAPI_H
+
+/**
+ * @mainpage NDB Cluster REP API
+ *
+ * The NDB Cluster Replication API (REP API) consists of a C API
+ * which is used to:
+ * - Start and stop replication
+ * - Other administrative tasks
+ *
+ * The functions use simple ASCII based
+ * commands to interact with thw Replication Server.
+ *
+ *
+ * @section General Concepts
+ *
+ * Each REP API function call needs an rep_C_Api::NdbRepHandle
+ * which initally is created by
+ * calling the function ndb_rep_create_handle().
+ *
+ * A function can return:
+ * -# An integer value. If it returns 0 then this indicates success.
+ * -# A pointer value. If it returns NULL then check the latest error.
+ * If it didn't return NULL, then "something" is returned.
+ * This "something" has to be free:ed by the user of the REP API.
+ */
+
+/** @addtogroup REP_C_API
+ * @{
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define REPAPI_MAX_NODE_GROUPS 4
+ /**
+ * The NdbRepHandle.
+ */
+ typedef struct ndb_rep_handle * NdbRepHandle;
+
+
+ /**
+ * Default reply from the server
+ */
+ struct ndb_rep_reply {
+ int return_code; ///< 0 if successful,
+ ///< otherwise error code
+ char message[256]; ///< Error or reply message.
+ };
+
+ enum QueryCounter {
+ PS = 0, ///< Stored on Primary System REP
+ SSReq = 1, ///< Requested for transfer to Standby System
+ SS = 2, ///< Stored on Standby System REP
+ AppReq = 3, ///< Requested to be applied to Standby System
+ App = 4, ///< Has been applied to Standby System
+ DelReq = 5, ///< Has been requested to be deleted on PS REP & SS REP
+ Subscription = 6,
+ ConnectionRep = 7,
+ ConnectionDb = 8
+ };
+
+
+ struct rep_state {
+ QueryCounter queryCounter;
+ unsigned int no_of_nodegroups;
+ unsigned int connected_rep;
+ unsigned int connected_db;
+ unsigned int subid;
+ unsigned int subkey;
+ unsigned int state;
+ unsigned int state_sub;
+ unsigned int first[REPAPI_MAX_NODE_GROUPS]; //4 = max no of nodegroups
+ unsigned int last[REPAPI_MAX_NODE_GROUPS]; //4 = max no of nodegroups
+ };
+
+
+
+
+
+
+ /***************************************************************************
+ * FUNCTIONS
+ ***************************************************************************/
+ /**
+ * Create a handle
+ *
+ * @return A handle != 0
+ * or 0 if failed to create one. (Check errno then).
+ */
+ NdbRepHandle ndb_rep_create_handle();
+
+ /**
+ * Destroy a handle
+ *
+ * @param handle Rep server handle
+ */
+ void ndb_rep_destroy_handle(NdbRepHandle * handle);
+
+ /**
+ * Get latest error associated with a handle
+ *
+ * @param handle Rep server handle
+ * @return Latest error.
+ */
+ int ndb_rep_get_latest_error(const NdbRepHandle handle);
+
+ /**
+ * Get latest error line associated with a handle
+ *
+ * @param handle Rep server handle.
+ * @return Latest error line.
+ */
+ int ndb_rep_get_latest_error_line(const NdbRepHandle handle);
+
+ /**
+ * Connect to a REP server
+ *
+ * @param handle Rep server handle.
+ * @param repsrv Hostname and port of the REP server,
+ * "hostname:port".
+ * @return 0 if OK, sets ndb_rep_handle->last_error otherwise.
+ */
+ int ndb_rep_connect(NdbRepHandle handle, const char * repsrv);
+
+ /**
+ * Disconnect from a REP server
+ *
+ * @param handle Rep server handle.
+ */
+ void ndb_rep_disconnect(NdbRepHandle handle);
+
+
+ /**
+ * Global Replication Command
+ *
+ * @param handle NDB REP handle.
+ * @param request Type of request
+ * @param replicationId Replication id is returned from function.
+ * @param reply Reply message.
+ * @param epoch Currenty used to STOP at a certain EPOCH
+ * @return 0 if successful, error code otherwise.
+ */
+ int ndb_rep_command(NdbRepHandle handle,
+ unsigned int request,
+ unsigned int* replicationId,
+ struct ndb_rep_reply* reply,
+ unsigned int epoch = 0);
+
+
+ /**
+ * Global Replication Command
+ *
+ * @param handle NDB REP handle.
+ * @param counter Type of request. If <0, then
+ "first" and "last" in repstate
+ is set to 0;x
+ * @param replicationId Replication id is returned from function.
+ * @param reply Reply message.
+ * @param repstate Struct containing queried data. (Note!
+ * All values are set in the struct, regardless
+ which QueryCounter that has been set
+ * @return 0 if successful, error code otherwise.
+ */
+ int ndb_rep_query(NdbRepHandle handle,
+ QueryCounter counter,
+ unsigned int* replicationId,
+ struct ndb_rep_reply* reply,
+ struct rep_state * repstate);
+
+
+/**
+ * @deprecated (will probably be). Can use ndb_rep_query instead.
+ */
+ int ndb_rep_get_status(NdbRepHandle handle,
+ unsigned int* replication_id,
+ struct ndb_rep_reply* /*reply*/,
+ struct rep_state * repstate);
+
+
+
+ enum RequestStatusCode {
+ OK = 0, ///< Everything OK
+ Error = 1, ///< Generic error
+ AlreadyExists = 2, ///< Entry already exists in list
+ NotExists = 3, ///< Entry does not exist in list
+ AlreadyStopped = 4
+ };
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+/** @} */
+
+#endif