summaryrefslogtreecommitdiff
path: root/storage/ndb/src/old_files/rep/adapters/AppNDB.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'storage/ndb/src/old_files/rep/adapters/AppNDB.hpp')
-rw-r--r--storage/ndb/src/old_files/rep/adapters/AppNDB.hpp141
1 files changed, 141 insertions, 0 deletions
diff --git a/storage/ndb/src/old_files/rep/adapters/AppNDB.hpp b/storage/ndb/src/old_files/rep/adapters/AppNDB.hpp
new file mode 100644
index 00000000000..9563a1e41ab
--- /dev/null
+++ b/storage/ndb/src/old_files/rep/adapters/AppNDB.hpp
@@ -0,0 +1,141 @@
+/* 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 APPNDB_HPP
+#define APPNDB_HPP
+#include "NdbApi.hpp"
+
+#include <NdbMain.h>
+#include <NdbOut.hpp>
+#include <NdbSleep.h>
+#include <NdbTick.h>
+
+#include <NdbThread.h>
+#include <Vector.hpp>
+
+#include "TableInfoPs.hpp"
+#include <rep/storage/GCIContainer.hpp>
+#include <rep/storage/GCIBuffer.hpp>
+
+#include <rep/state/RepState.hpp>
+
+extern "C" {
+ void * runAppNDB_C(void *);
+}
+
+/**
+ * @class AppNDB
+ * @brief Connects to NDB and appliers log records into standby system
+ */
+class AppNDB {
+public:
+ /***************************************************************************
+ * Constructor / Destructor / Init
+ ***************************************************************************/
+ AppNDB(class GCIContainer * gciContainer, class RepState * repState);
+ ~AppNDB();
+
+ void init(const char * connectString);
+
+ GrepError::Code
+ applyBuffer(Uint32 nodeGrp, Uint32 first, Uint32 force);
+
+ /**
+ * Takes a table id and drops it.
+ * @param tableId Name of table to be dropped
+ * @return Returns 1 = ok, -1 failed
+ *
+ * @todo Fix: 0 usually means ok...
+ */
+ int dropTable(Uint32 tableId);
+ void startApplier();
+ void stopApplier(GrepError::Code err);
+private:
+ /***************************************************************************
+ * Methods
+ ***************************************************************************/
+ friend void* runAppNDB_C(void*);
+
+ void threadMainAppNDB(void);
+
+ /**
+ * Takes a log records and does the operation specified in the log record
+ * on NDB.
+ * @param - lr (LogRecord)
+ * @param - force true if GREP:SSCoord is in phase STARTING.
+ * Ignore "Execute" errors if true.
+ */
+ int applyLogRecord(LogRecord * lr, bool force, Uint32 gci);
+
+ /**
+ * Applies a table based on a meta record and creates the table
+ * in NDB.
+ * @param - meta record
+ * @return - 0 on success, -1 if something went wrong
+ */
+ int applyMetaRecord(MetaRecord * mr, Uint32 gci);
+
+ /**
+ * Takes a meta record and uses NdbDictionaryXXX::parseInfoTable
+ * and returns a table
+ * @param mr - MetaRecord
+ * @return - a table based on the meta record
+ */
+ NdbDictionary::Table* prepareMetaRecord(MetaRecord * mr);
+
+ /**
+ * Prints out an NDB error message if a ndb operation went wrong.
+ * @param msg - text explaining the error
+ * @param err - NDB error type
+ */
+ void reportNdbError(const char * msg, const NdbError & err);
+
+ /**
+ * Prints out a warning message. Used if support for something
+ * is not implemented.
+ * @param tableName - the name of the table this warning occured on
+ * @param message - warning message
+ */
+ void reportWarning(const char * tableName, const char * message);
+
+ /**
+ * Prints out a warning message. Used if support for something
+ * is not implemented.
+ * @param tableName - the name of the table this warning occured on
+ * @param columnName - the name of the column this warning occured on
+ * @param message - warning message
+ */
+ void reportWarning(const char * tableName, const char * columnName,
+ const char * message);
+
+
+ /***************************************************************************
+ * Variables
+ ***************************************************************************/
+ GCIContainer * m_gciContainer;
+ RepState * m_repState;
+
+ Ndb* m_ndb;
+ NdbDictionary::Dictionary * m_dict;
+ NodeId m_ownNodeId;
+ bool m_started;
+ TableInfoPs * m_tableInfoPs;
+ NdbThread* m_applierThread;
+ NdbCondition * m_cond;
+ MutexVector<GCIBuffer*> m_gciBufferList;
+};
+
+#endif