diff options
Diffstat (limited to 'ndb/src/rep/state/RepState.hpp')
-rw-r--r-- | ndb/src/rep/state/RepState.hpp | 275 |
1 files changed, 0 insertions, 275 deletions
diff --git a/ndb/src/rep/state/RepState.hpp b/ndb/src/rep/state/RepState.hpp deleted file mode 100644 index e88151d5609..00000000000 --- a/ndb/src/rep/state/RepState.hpp +++ /dev/null @@ -1,275 +0,0 @@ -/* 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 REP_STATE_HPP -#define REP_STATE_HPP - -#include <GrepError.hpp> -#include <signaldata/GrepImpl.hpp> -#include <rep/repapi/repapi.h> -#include <rep/ExtSender.hpp> -#include <rep/adapters/AppNDB.hpp> - -#include "Channel.hpp" -#include "Interval.hpp" - -#define REQUESTOR_EXECUTES_NEEDED_FOR_UNKNOWN_CONNECTION 5 - -class NdbApiSignal; - - -/** - * @class RepState - * @brief The main information about the replication - */ -class RepState -{ -public: - RepState(); - ~RepState(); - void init(ExtSender * extSender) { m_extSender = extSender; } - - /*************************************************************************** - * Callback functions - * - * These are used when RepState wants to do something - ***************************************************************************/ - - typedef void (FuncRequestCreateSubscriptionId) - (void * cbObj, NdbApiSignal* signal); - - typedef void (FuncRequestCreateSubscription) - (void * cbObj, NdbApiSignal* signal, Uint32 subId, - Uint32 subKey , - Vector <struct table *> * selectedTables); - - typedef void (FuncRequestRemoveSubscription) - (void * cbObj, NdbApiSignal* signal, Uint32 subId, Uint32 subKey); - - typedef void (FuncRequestTransfer) - (void * cbObj, NdbApiSignal* signal, - Uint32 nodeGrp, Uint32 first, Uint32 last); - - typedef void (FuncRequestApply) - (void * cbObj, NdbApiSignal* signal, - Uint32 nodeGrp, Uint32 first, Uint32 last, Uint32 force); - - typedef void (FuncRequestDeleteSS) - (void * cbObj, NdbApiSignal* signal, - Uint32 nodeGrp, Uint32 first, Uint32 last); - - typedef void (FuncRequestDeletePS) - (void * cbObj, NdbApiSignal* signal, - Uint32 nodeGrp, Uint32 first, Uint32 last); - - typedef void (FuncRequestStartMetaLog) - (void * cbObj, NdbApiSignal * signal, Uint32 subId, Uint32 subKey); - - typedef void (FuncRequestStartDataLog) - (void * cbObj, NdbApiSignal * signal, Uint32 subId, Uint32 subKey); - - typedef void (FuncRequestStartMetaScan) - (void * cbObj, NdbApiSignal * signal, Uint32 subId, Uint32 subKey); - - typedef void (FuncRequestStartDataScan) - (void * cbObj, NdbApiSignal * signal, Uint32 subId, Uint32 subKey); - - typedef void (FuncRequestEpochInfo) - (void * cbObj, NdbApiSignal * signal, Uint32 nodeGrp); - - /*************************************************************************** - * - ***************************************************************************/ - void setSubscriptionRequests(FuncRequestCreateSubscriptionId f1, - FuncRequestCreateSubscription f2, - FuncRequestRemoveSubscription f3); - void setIntervalRequests(FuncRequestTransfer * f1, - FuncRequestApply * f2, - FuncRequestDeleteSS * f3, - FuncRequestDeletePS * f4); - void setStartRequests(FuncRequestStartMetaLog * f5, - FuncRequestStartDataLog * f6, - FuncRequestStartMetaScan * f7, - FuncRequestStartDataScan * f8, - FuncRequestEpochInfo * f9); - - /*************************************************************************** - * Enablings - ***************************************************************************/ - bool isEnabled() { return m_channel.m_requestorEnabled; } - bool isTransferEnabled() { return m_channel.m_transferEnabled; } - bool isApplyEnabled() { return m_channel.m_applyEnabled; } - bool isDeleteEnabled() { return m_channel.m_deleteEnabled; } - bool isAutoStartEnabled() { return m_channel.m_autoStartEnabled; } - - void enable() { m_channel.m_requestorEnabled = true; } - void enableTransfer() { m_channel.m_transferEnabled = true; } - void enableApply() { m_channel.m_applyEnabled = true; } - void enableDelete() { m_channel.m_deleteEnabled = true; } - void enableAutoStart() { m_channel.m_autoStartEnabled = true; } - - void disable() { m_channel.m_requestorEnabled = false; } - void disableTransfer() { m_channel.m_transferEnabled = false; } - void disableApply() { m_channel.m_applyEnabled = false;} - void disableDelete() { m_channel.m_deleteEnabled = false; } - void disableAutoStart() { m_channel.m_autoStartEnabled = false; } - - /*************************************************************************** - * Node groups - ***************************************************************************/ - void setNoOfNodeGroups(Uint32 n) { m_channel.setNoOfNodeGroups(n); } - Uint32 getNoOfNodeGroups() { return m_channel.getNoOfNodeGroups(); } - - /*************************************************************************** - * Event reporting to RepState - * - * These are used to update the state of the Requestor when something - * has happend. - ***************************************************************************/ - void request(GrepReq::Request request); - - //GrepError::Code createSubscription(Uint32 subId, Uint32 subKey); - GrepError::Code protectedExecute(); - GrepError::Code protectedRequest(GrepReq::Request request, Uint32 arg); - GrepError::Code protectedRequest(GrepReq::Request request, - Uint32 arg1, - Uint32 arg2); - GrepError::Code protectedAddTable(const char * fullTableName); - GrepError::Code protectedRemoveTable(const char * fullTableName); - GrepError::Code add(Channel::Position s, Uint32 nodeGrp, const Interval i); - GrepError::Code clear(Channel::Position s, Uint32 nodeGrp, const Interval i); - - void eventSubscriptionDeleted(Uint32 subId, Uint32 subKey); - - void eventMetaLogStarted(NdbApiSignal*, Uint32 subId, Uint32 subKey); - void eventDataLogStarted(NdbApiSignal*, Uint32 subId, Uint32 subKey); - void eventMetaScanCompleted(NdbApiSignal*, Uint32 subId, Uint32 subKey, - Interval epochs); - void eventDataScanCompleted(NdbApiSignal*, Uint32 subId, Uint32 subKey, - Interval epochs); - void eventMetaScanFailed(Uint32 subId, Uint32 subKey, GrepError::Code error); - void eventDataScanFailed(Uint32 subId, Uint32 subKey, GrepError::Code error); - - /** - * @fn sendInsertConf - * @param gci - the gci of the applied GCIBuffer. - * @param nodeGrp - the nodeGrp of the applied GCIBuffer. - */ - void eventInsertConf(Uint32 gci, Uint32 nodeGrp); - - /** - * @fn sendInsertRef - * @param gci - the gci of the applied GCIBuffer. - * @param nodeGrp - the nodeGrp of the applied GCIBuffer. - * @param tableId - the table of the applied GCIBuffer. - */ - void eventInsertRef(Uint32 gci, Uint32 nodeGrp, Uint32 tableId, - GrepError::Code err); - void eventCreateTableRef(Uint32 gci, - Uint32 tableId, - const char * tableName, - GrepError::Code err) ; - - void eventSubscriptionIdCreated(Uint32 subId, Uint32 subKey); - void eventSubscriptionIdCreateFailed(Uint32 subId, Uint32 subKey, - GrepError::Code error); - - void eventSubscriptionCreated(Uint32 subId, Uint32 subKey); - void eventSubscriptionCreateFailed(Uint32 subId, Uint32 subKey, - GrepError::Code error); - - void eventMetaLogStartFailed(Uint32 subId, Uint32 subKey, - GrepError::Code error); - void eventDataLogStartFailed(Uint32 subId, Uint32 subKey, - GrepError::Code error); - - void eventNodeConnected(Uint32 nodeId); - void eventNodeDisconnected(Uint32 nodeId); - void eventNodeConnectable(Uint32 nodeId); - - void printStatus(); - Properties * getStatus(); - Properties * query(QueryCounter counter, Uint32 replicationId); - Uint32 getSubId() { return m_channel.getSubId(); } - Uint32 getSubKey () { return m_channel.getSubKey(); } - - void setApplier(class AppNDB * app) { m_applier = app; } - void setGCIContainer(class GCIContainer * c) { m_gciContainer = c; } - - /* @todo should be private */ - Channel m_channel; - -private: - /*************************************************************************** - * PRIVATE ATTRIBUTES - ***************************************************************************/ - ExtSender * m_extSender; - AppNDB * m_applier; - GCIContainer * m_gciContainer; - - Uint32 m_subIdToRemove; - Uint32 m_subKeyToRemove; - - - enum Connected - { - UNKNOWN, ///< - CONNECTED, ///< Recently received info from (all needed) PS REP - DISCONNECTED, ///< Received disconnect info from (some needed) PS REP - CONNECTABLE ///< Received disconnect info from (some needed) PS REP - }; - Connected m_connected; - Connected m_repConnected; - Uint32 m_connected_counter; - - NdbMutex * m_mutex; - - /** @todo Should be channel-specific */ - Uint32 m_stopEpoch; - - /*************************************************************************** - * PRIVATE METHODS - ***************************************************************************/ - GrepError::Code execute(NdbApiSignal*); - GrepError::Code request(GrepReq::Request req, - Uint32 arg1, - Uint32 arg2, - NdbApiSignal*); - - FuncRequestCreateSubscriptionId * m_funcRequestCreateSubscriptionId; - FuncRequestCreateSubscription * m_funcRequestCreateSubscription; - FuncRequestRemoveSubscription * m_funcRequestRemoveSubscription; - - FuncRequestTransfer * m_funcRequestTransfer; - FuncRequestApply * m_funcRequestApply; - FuncRequestDeleteSS * m_funcRequestDeleteSS; - FuncRequestDeletePS * m_funcRequestDeletePS; - - FuncRequestStartMetaLog * m_funcRequestStartMetaLog; - FuncRequestStartDataLog * m_funcRequestStartDataLog; - FuncRequestStartMetaScan * m_funcRequestStartMetaScan; - FuncRequestStartDataScan * m_funcRequestStartDataScan; - FuncRequestEpochInfo * m_funcRequestEpochInfo; - - void requestTransfer(NdbApiSignal * signal); - void requestApply(NdbApiSignal * signal); - void requestDelete(NdbApiSignal * signal); - void requestEpochInfo(NdbApiSignal * signal); - void getEpochState(Channel::Position pos, Properties * p); - friend void testRepState(); -}; - -#endif |