GrepImpl.hpp
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:17k
- /* 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 GREP_IMPL_HPP
- #define GREP_IMPL_HPP
- #include "SignalData.hpp"
- #include <GrepError.hpp>
- #include <NodeBitmask.hpp>
- /*****************************************************************************
- * GREP REQ Request a Global Replication (between SS and PS)
- *****************************************************************************/
- /**
- * @class GrepReq
- * @brief
- */
- class GrepReq
- {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Grep;
- public:
- enum Request {
- START = 0, ///< Start Global Replication (all phases)
- SLOWSTOP = 1, ///< Stop after finishing applying current GCI epoch
- FASTSTOP = 2, ///< Stop after finishing applying all PS GCI epochs
- STATUS = 3, ///< Status
- REMOVE_BUFFERS = 4, ///< Remove buffers from PS and SS
- START_SUBSCR = 5,
- START_METALOG = 6, ///< Start Global Replication Logging of Metadata
- START_METASCAN = 7, ///< Start Global Replication Scanning of Metadata
- START_DATALOG = 8, ///< Start Global Replication Logging of table data
- START_DATASCAN = 9, ///< Start Global Replication Scanning of table data
- START_REQUESTOR = 10, ///< Start Global Replication Requestor
- START_TRANSFER = 11, ///< Start SS-PS transfer
- START_APPLY = 12, ///< Start applying GCI epochs in SS
- START_DELETE = 13, ///< Start deleting buffers at PS/SS REP automatic.
- STOP_SUBSCR = 14, ///< Remove subscription
- STOP_METALOG = 15, ///< Stop Global Replication Logging of Metadata
- STOP_METASCAN = 16, ///< Stop Global Replication Scanning of Metadata
- STOP_DATALOG = 17, ///< Stop Global Replication Logging of table data
- STOP_DATASCAN = 18, ///< Stop Global Replication Scanning of table data
- STOP_REQUESTOR = 19, ///< Stop Global Replication Requestor
- STOP_TRANSFER = 20, ///< Stop SS-PS transfer
- STOP_APPLY = 21, ///< Stop applying GCI epochs in SS
- STOP_DELETE = 22, ///< Stop deleting buffers at PS/SS REP automatically
- CREATE_SUBSCR = 23, ///< Create subscription ID in SUMA
- DROP_TABLE = 24, ///< Create subscription ID in SUMA
- STOP = 25,
- NO_REQUEST = 0xffffffff
- };
- STATIC_CONST( SignalLength = 2 );
- Uint32 senderRef;
- Uint32 request;
- };
- /*****************************************************************************
- * CREATE Between SS and PS (DB and REP nodes)
- *****************************************************************************/
- /**
- * @class GrepSubCreateReq
- * @brief
- */
- class GrepSubCreateReq
- {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Grep;
-
- friend bool printGREP_SUB_CREATE_REQ(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- STATIC_CONST( SignalLength = 5 );
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 subscriptionType;
- Uint32 senderRef;
- Uint32 senderData;
- SECTION( TABLE_LIST = 0 );
- };
- /**
- * @class GrepSubCreateReq
- * @brief
- */
- class GrepSubCreateRef
- {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Grep;
-
- friend bool printGREP_SUB_CREATE_REF(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- STATIC_CONST( SignalLength = 6 );
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 subscriptionType;
- Uint32 err;
- Uint32 senderRef;
- Uint32 senderData;
- };
- /**
- * @class GrepSubCreateConf
- * @brief
- */
- class GrepSubCreateConf
- {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Grep;
-
- friend bool printGREP_SUB_CREATE_CONF(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- STATIC_CONST( SignalLength = 6 );
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 subscriptionType;
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 noOfNodeGroups;
- };
- /*****************************************************************************
- * CREATE Internal between PS DB nodes
- *****************************************************************************/
- /**
- * @class GrepCreateReq
- * @brief
- */
- class GrepCreateReq {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class GrepParticipant;
-
- friend bool printGREP_CREATE_REQ(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- STATIC_CONST( SignalLength = 8 );
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 subscriberData;
- Uint32 subscriberRef;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 subscriptionType;
- SECTION( TABLE_LIST = 0 );
- };
- /**
- * @class GrepCreateRef
- * @brief
- */
- class GrepCreateRef {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class GrepParticipant;
- friend bool printGREP_CREATE_REF(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- enum ErrorCode {
- NF_FakeErrorREF = GrepError::NF_FakeErrorREF
- };
- STATIC_CONST( SignalLength = 6 );
- Uint32 senderRef;
- Uint32 senderData;
- union {
- Uint32 err;
- Uint32 errorCode;
- };
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 subscriptionType;
- };
- /**
- * @class GrepCreateConf
- * @brief
- */
- class GrepCreateConf {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class GrepParticipant;
-
- friend bool printGREP_CREATE_CONF(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- STATIC_CONST( SignalLength = 6 );
- Uint32 senderNodeId;
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 subscriptionType;
- };
- /*****************************************************************************
- * START Between SS and PS (DB and REP nodes)
- *****************************************************************************/
- /**
- * @class GrepSubStartReq
- * @brief
- */
- class GrepSubStartReq {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Grep;
-
- friend bool printGREP_SUB_START_REQ(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- STATIC_CONST( SignalLength = 5 );
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 part;
- };
- /**
- * @class GrepSubStartRef
- * @brief
- */
- class GrepSubStartRef {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Grep;
-
- friend bool printGREP_SUB_START_REF(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- STATIC_CONST( SignalLength = 6 );
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 err;
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 part;
- };
- /**
- * @class GrepSubStartConf
- * @brief
- */
- class GrepSubStartConf {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Grep;
-
- friend bool printGREP_SUB_START_CONF(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- STATIC_CONST( SignalLength = 6 );
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 part;
- Uint32 firstGCI;
- };
- /*****************************************************************************
- * START Internal between PS DB nodes
- *****************************************************************************/
- /**
- * @class GrepStartReq
- * @brief
- */
- class GrepStartReq {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class GrepParticipant;
-
- friend bool printGREP_START_REQ(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- STATIC_CONST( SignalLength = 4 );
-
- Uint32 senderData;
- Uint32 part;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- };
- /**
- * @class GrepStartRef
- * @brief
- */
- class GrepStartRef {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class GrepParticipant;
- friend bool printGREP_START_REF(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- enum ErrorCode {
- NF_FakeErrorREF = GrepError::NF_FakeErrorREF
- };
- STATIC_CONST( SignalLength = 6 );
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 part;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- union {
- Uint32 err;
- Uint32 errorCode;
- };
- };
- /**
- * @class GrepStartConf
- * @brief
- */
- class GrepStartConf {
- /**
- * Sender(s)/Reciver(s)
- */
-
- friend class GrepParticipant;
-
- friend bool printGREP_START_CONF(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- STATIC_CONST( SignalLength = 7 );
-
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 part;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 firstGCI;
- Uint32 senderNodeId;
- };
- /*****************************************************************************
- * SCAN (SYNC) Between SS and PS (REP and DB nodes)
- *****************************************************************************/
- /**
- * @class GrepSubSyncReq
- * @brief
- */
- class GrepSubSyncReq {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Grep;
-
- friend bool printGREP_SUB_SYNC_REQ(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- STATIC_CONST( SignalLength = 5 );
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 part;
- };
- /**
- * @class GrepSubSyncRef
- * @brief
- */
- class GrepSubSyncRef {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Grep;
-
- friend bool printGREP_SUB_SYNC_REF(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- STATIC_CONST( SignalLength = 6 );
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 senderRef;
- Uint32 err;
- Uint32 senderData;
- Uint32 part;
- };
- /**
- * @class GrepSubSyncConf
- * @brief
- */
- class GrepSubSyncConf {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Grep;
-
- friend bool printGREP_SUB_SYNC_CONF(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- STATIC_CONST( SignalLength = 7 );
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 part;
- Uint32 firstGCI;
- Uint32 lastGCI;
- };
- /*****************************************************************************
- * SCAN (SYNC) Internal between PS DB nodes
- *****************************************************************************/
- /**
- * @class GrepSyncReq
- * @brief
- */
- class GrepSyncReq {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class GrepParticipant;
-
- friend bool printGREP_SYNC_REQ(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- STATIC_CONST( SignalLength = 4 );
-
- Uint32 senderData;
- Uint32 part;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- };
- /**
- * @class GrepSyncRef
- * @brief
- */
- class GrepSyncRef {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class GrepParticipant;
- friend bool printGREP_SYNC_REF(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- enum ErrorCode {
- NF_FakeErrorREF = GrepError::NF_FakeErrorREF
- };
- STATIC_CONST( SignalLength = 6 );
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 part;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- union {
- Uint32 err;
- Uint32 errorCode;
- };
- };
- /**
- * @class GrepSyncConf
- * @brief
- */
- class GrepSyncConf
- {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class GrepParticipant;
-
- friend bool printGREP_SYNC_CONF(FILE *, const Uint32 *, Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 8 );
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 part;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 senderNodeId;
- Uint32 firstGCI;
- Uint32 lastGCI;
- };
- /*****************************************************************************
- * ABORT - remove subscription
- *****************************************************************************/
- /**
- * @class GrepSubRemoveReq
- * @brief Between PS and SS
- */
- class GrepSubRemoveReq {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Grep;
-
- friend bool printGREP_SUB_REMOVE_REQ(FILE *, const Uint32 *,
- Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 4 );
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- };
- /**
- * @class GrepSubRemoveRef
- * @brief Between PS and SS
- */
- class GrepSubRemoveRef {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Grep;
-
- friend bool printGREP_SUB_REMOVE_REF(FILE *, const Uint32 *,
- Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 5 );
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 err;
- };
- /**
- * @class
- * @brief
- */
- class GrepSubRemoveConf {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Grep;
-
- friend bool printGREP_SUB_REMOVE_CONF(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- STATIC_CONST( SignalLength = 4 );
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- };
- /**
- * @class
- * @brief
- */
- class GrepRemoveReq {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class GrepParticipant;
-
- friend bool printGREP_REMOVE_REQ(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- STATIC_CONST( SignalLength = 4 );
-
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- };
- /**
- * @class
- * @brief
- */
- class GrepRemoveRef {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class GrepParticipant;
- friend bool printGREP_REMOVE_REF(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- enum ErrorCode {
- NF_FakeErrorREF = GrepError::NF_FakeErrorREF
- };
- STATIC_CONST( SignalLength = 5 );
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- union {
- Uint32 err;
- Uint32 errorCode;
- };
- };
- /**
- * @class
- * @brief
- */
- class GrepRemoveConf {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class GrepParticipant;
-
- friend bool printGREP_REMOVE_CONF(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- STATIC_CONST( SignalLength = 5 );
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 senderNodeId;
- };
- /*****************************************************************************
- * WAIT FOR CGP
- *****************************************************************************/
- /**
- * @class GrepWaitGcpReq
- * @brief
- */
- class GrepWaitGcpReq {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class GrepParticipant;
-
- friend bool printGREP_WAITGCP_REQ(FILE *, const Uint32 *,
- Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 5 );
-
- Uint32 senderData;
- Uint32 gcp;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 senderNodeId;
- };
- /**
- * @class GrepWaitGcpConf
- * @brief
- */
- class GrepWaitGcpConf {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class GrepParticipant;
-
- friend bool printGREP_WAITGCP_CONF(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- STATIC_CONST( SignalLength = 4 );
-
- Uint32 senderData;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 senderNodeId;
- };
- class GrepCreateSubscriptionIdConf {
- friend class Grep;
-
- friend bool printGREP_CREATE_SUBSCRIPTION_ID_CONF(FILE *, const Uint32 *,
- Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 3 );
-
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- union { // Haven't decide what to call it
- Uint32 senderData;
- Uint32 subscriberData;
- };
- };
- class GrepStartMe {
- friend class Grep;
- friend bool printGREP_START_ME(FILE *, const Uint32 *,
- Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 1 );
- Uint32 senderRef;
- };
- /**
- * @class GrepAddSubReq
- * @brief
- */
- class GrepAddSubReq {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class GrepParticipant;
-
- friend bool printGREP_ADD_SUB_REQ(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- STATIC_CONST( SignalLength = 7 );
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 subscriberData;
- Uint32 subscriberRef;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 subscriptionType;
- };
- /**
- * @class GrepAddSubRef
- * @brief
- */
- class GrepAddSubRef {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class GrepParticipant;
- friend bool printGREP_CREATE_REF(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- STATIC_CONST( SignalLength = 5 );
- Uint32 senderData;
- Uint32 err;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 subscriptionType;
- };
- /**
- * @class GrepAddSubConf
- * @brief
- */
- class GrepAddSubConf {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class GrepParticipant;
-
- friend bool printGREP_CREATE_CONF(FILE *,
- const Uint32 *,
- Uint32,
- Uint16);
- public:
- STATIC_CONST( SignalLength = 1 );
- Uint32 noOfSub;
- };
- #endif