SumaImpl.hpp
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:13k
- /* 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 SUMA_IMPL_HPP
- #define SUMA_IMPL_HPP
- #include "SignalData.hpp"
- #include <NodeBitmask.hpp>
- class SubCreateReq {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Grep;
- friend class SumaParticipant;
-
- friend bool printSUB_CREATE_REQ(FILE *, const Uint32 *, Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 5 );
-
- enum SubscriptionType {
- SingleTableScan = 1, //
- DatabaseSnapshot = 2, // All tables/all data (including new ones)
- TableEvent = 3, //
- SelectiveTableSnapshot = 4, // User defines tables
- RemoveFlags = 0xff,
- GetFlags = 0xff << 16,
- AddTableFlag = 0x1 << 16,
- RestartFlag = 0x2 << 16
- };
-
- Uint32 subscriberRef;
- Uint32 subscriberData;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 subscriptionType;
- union {
- Uint32 tableId; // Used when doing SingelTableScan
- };
- SECTION( ATTRIBUTE_LIST = 0); // Used when doing SingelTableScan
- SECTION( TABLE_LIST = 1 );
-
- };
- class SubCreateRef {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Grep;
- friend class SumaParticipant;
-
- friend bool printSUB_CREATE_REF(FILE *, const Uint32 *, Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 6 );
- Uint32 subscriberRef;
- Uint32 subscriberData;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 subscriptionType;
- Uint32 err;
- SECTION( ATTRIBUTE_LIST = 0); // Used when doing SingelTableScan
- union {
- Uint32 tableId; // Used when doing SingelTableScan
- };
- };
- class SubCreateConf {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Grep;
- friend class SumaParticipant;
-
- friend bool printSUB_CREATE_CONF(FILE *, const Uint32 *, Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 3 );
-
- Uint32 subscriberData;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- };
- class SubscriptionData {
- public:
- enum Part {
- MetaData = 1,
- TableData = 2
- };
- };
- class SubStartReq {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Suma;
-
- friend bool printSUB_START_REQ(FILE *, const Uint32 *, Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 6 );
- STATIC_CONST( SignalLength2 = SignalLength+1 );
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 part; // SubscriptionData::Part
- Uint32 subscriberData;
- Uint32 subscriberRef;
- };
- class SubStartRef {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Suma;
-
- friend bool printSUB_START_REF(FILE *, const Uint32 *, Uint32, Uint16);
- public:
- enum ErrorCode {
- Undefined = 0,
- NF_FakeErrorREF = 11,
- Busy = 701,
- Temporary = 0x1 << 16
- };
- bool isTemporary() const;
- void setTemporary();
- ErrorCode setTemporary(ErrorCode ec);
- STATIC_CONST( SignalLength = 7 );
- STATIC_CONST( SignalLength2 = SignalLength+1 );
-
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 part; // SubscriptionData::Part
- Uint32 subscriberData;
- union { // do not change the order here!
- Uint32 err;
- Uint32 errorCode;
- };
- // with SignalLength2
- Uint32 subscriberRef;
- };
- inline bool SubStartRef::isTemporary() const
- { return (errorCode & SubStartRef::Temporary) > 0; }
- inline void SubStartRef::setTemporary()
- { errorCode |= SubStartRef::Temporary; }
- inline SubStartRef::ErrorCode SubStartRef::setTemporary(ErrorCode ec)
- { return (SubStartRef::ErrorCode)
- (errorCode = ((Uint32) ec | (Uint32)SubStartRef::Temporary)); }
- class SubStartConf {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Grep;
-
- friend bool printSUB_START_CONF(FILE *, const Uint32 *, Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 7 );
- STATIC_CONST( SignalLength2 = SignalLength+1 );
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 firstGCI;
- Uint32 part; // SubscriptionData::Part
- Uint32 subscriberData;
- // with SignalLength2
- Uint32 subscriberRef;
- };
- class SubStopReq {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Suma;
-
- friend bool printSUB_STOP_REQ(FILE *, const Uint32 *, Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 7 );
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 part; // SubscriptionData::Part
- Uint32 subscriberData;
- Uint32 subscriberRef;
- };
- class SubStopRef {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Suma;
-
- friend bool printSUB_STOP_REF(FILE *, const Uint32 *, Uint32, Uint16);
- public:
- enum ErrorCode {
- Undefined = 0,
- NF_FakeErrorREF = 11,
- Busy = 701,
- Temporary = 0x1 << 16
- };
- bool isTemporary() const;
- void setTemporary();
- ErrorCode setTemporary(ErrorCode ec);
- STATIC_CONST( SignalLength = 8 );
-
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 part; // SubscriptionData::Part
- Uint32 subscriberData;
- Uint32 subscriberRef;
- union {
- Uint32 err;
- Uint32 errorCode;
- };
- };
- inline bool SubStopRef::isTemporary() const
- { return (errorCode & SubStopRef::Temporary) > 0; }
- inline void SubStopRef::setTemporary()
- { errorCode |= SubStopRef::Temporary; }
- inline SubStopRef::ErrorCode SubStopRef::setTemporary(ErrorCode ec)
- { return (SubStopRef::ErrorCode)
- (errorCode = ((Uint32) ec | (Uint32)SubStopRef::Temporary)); }
- class SubStopConf {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Grep;
-
- friend bool printSUB_STOP_CONF(FILE *, const Uint32 *, Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 7 );
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 part; // SubscriptionData::Part
- Uint32 subscriberData;
- Uint32 subscriberRef;
- };
- class SubSyncReq {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Suma;
- friend class Grep;
-
- friend bool printSUB_SYNC_REQ(FILE *, const Uint32 *, Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 4 );
-
- public:
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 subscriberData;
- Uint32 part; // SubscriptionData::Part
- };
- class SubSyncRef {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Suma;
- friend class Grep;
-
- friend bool printSUB_SYNC_REF(FILE *, const Uint32 *, Uint32, Uint16);
- public:
- enum ErrorCode {
- Undefined = 0,
- Temporary = 0x1 << 16
- };
- STATIC_CONST( SignalLength = 5 );
-
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 part; // SubscriptionData::Part
- Uint32 subscriberData;
- union {
- Uint32 errorCode;
- Uint32 err;
- };
- };
- class SubSyncConf {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Suma;
- friend class Grep;
-
- friend bool printSUB_SYNC_CONF(FILE *, const Uint32 *, Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 4 );
-
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 part; // SubscriptionData::Part
- Uint32 subscriberData;
- };
- class SubMetaData {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class SumaParticipant;
- friend class Grep;
-
- friend bool printSUB_META_DATA(FILE *, const Uint32 *, Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 3 );
- SECTION( DICT_TAB_INFO = 0 );
-
- Uint32 gci;
- union { // Haven't decide what to call it
- Uint32 senderData;
- Uint32 subscriberData;
- };
- union {
- Uint32 tableId;
- };
- };
- class SubTableData {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class SumaParticipant;
- friend class Grep;
-
- friend bool printSUB_TABLE_DATA(FILE *, const Uint32 *, Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 7 );
-
- enum LogType {
- SCAN = 1,
- LOG = 2,
- REMOVE_FLAGS = 0xff,
- GCINOTCONSISTENT = 0x1 << 16
- };
-
- void setGCINotConsistent() { logType |= (Uint32)GCINOTCONSISTENT; };
- bool isGCIConsistent()
- { return (logType & (Uint32)GCINOTCONSISTENT) == 0 ? true : false; };
- union { // Haven't decide what to call it
- Uint32 senderData;
- Uint32 subscriberData;
- };
- Uint32 gci;
- Uint32 tableId;
- Uint32 operation;
- Uint32 noOfAttributes;
- Uint32 dataSize;
- Uint32 logType;
- };
- class SubSyncContinueReq {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class SumaParticipant;
- friend class Grep;
- friend class Trix;
-
- friend bool printSUB_SYNC_CONTINUE_REQ(FILE *, const Uint32 *, Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 2 );
- union { // Haven't decide what to call it
- Uint32 senderData;
- Uint32 subscriberData;
- };
- Uint32 noOfRowsSent;
- };
- class SubSyncContinueRef {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class SumaParticipant;
- friend class Grep;
- friend class Trix;
-
- friend bool printSUB_SYNC_CONTINUE_REF(FILE *, const Uint32 *, Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 2 );
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- };
- class SubSyncContinueConf {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class SumaParticipant;
- friend class Grep;
- friend class Trix;
-
- friend bool printSUB_SYNC_CONTINUE_CONF(FILE *, const Uint32 *, Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 2 );
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- };
- class SubGcpCompleteRep {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Dbdih;
- friend class SumaParticipant;
- friend class Grep;
- friend class Trix;
-
- friend bool printSUB_GCP_COMPLETE_REP(FILE *, const Uint32 *, Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 3 );
-
- Uint32 gci;
- Uint32 senderRef;
- union { // Haven't decide what to call it
- Uint32 senderData;
- Uint32 subscriberData;
- };
- };
- class SubGcpCompleteAcc {
- /**
- * Sender(s)/Reciver(s)
- */
- public:
- STATIC_CONST( SignalLength = SubGcpCompleteRep::SignalLength );
- SubGcpCompleteRep rep;
- };
- class SubRemoveReq {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Grep;
- friend class SumaParticipant;
-
- friend bool printSUB_REMOVE_REQ(FILE *, const Uint32 *, Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 4 );
-
- Uint32 senderRef;
- Uint32 senderData;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- };
- class SubRemoveRef {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Grep;
- friend class SumaParticipant;
-
- friend bool printSUB_REMOVE_REF(FILE *, const Uint32 *, Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 5 );
- enum ErrorCode {
- Undefined = 0,
- NF_FakeErrorREF = 11,
- Busy = 701,
- Temporary = 0x1 << 16
- };
- bool isTemporary() const;
- void setTemporary();
- ErrorCode setTemporary(ErrorCode ec);
- Uint32 senderRef;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- union {
- Uint32 err;
- Uint32 errorCode;
- };
- union { // Haven't decide what to call it
- Uint32 senderData;
- Uint32 subscriberData;
- };
- };
- inline bool SubRemoveRef::isTemporary() const
- { return (err & SubRemoveRef::Temporary) > 0; }
- inline void SubRemoveRef::setTemporary()
- { err |= SubRemoveRef::Temporary; }
- inline SubRemoveRef::ErrorCode SubRemoveRef::setTemporary(ErrorCode ec)
- { return (SubRemoveRef::ErrorCode)
- (errorCode = ((Uint32) ec | (Uint32)SubRemoveRef::Temporary)); }
- class SubRemoveConf {
- /**
- * Sender(s)/Reciver(s)
- */
- friend class Grep;
- friend class SumaParticipant;
-
- friend bool printSUB_REMOVE_CONF(FILE *, const Uint32 *, Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 5 );
-
- Uint32 senderRef;
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 err;
- union { // Haven't decide what to call it
- Uint32 senderData;
- Uint32 subscriberData;
- };
- };
- class CreateSubscriptionIdReq {
- friend class Grep;
- friend class SumaParticipant;
-
- friend bool printCREATE_SUBSCRIPTION_ID_REQ(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 CreateSubscriptionIdConf {
- friend class Grep;
- friend class SumaParticipant;
-
- friend bool printCREATE_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 CreateSubscriptionIdRef {
- friend class Grep;
- friend class SumaParticipant;
-
- friend bool printCREATE_SUBSCRIPTION_ID_REF(FILE *, const Uint32 *,
- Uint32, Uint16);
- public:
- STATIC_CONST( SignalLength = 4 );
-
- Uint32 subscriptionId;
- Uint32 subscriptionKey;
- Uint32 err;
- union { // Haven't decide what to call it
- Uint32 senderData;
- Uint32 subscriberData;
- };
- };
- class SumaStartMe {
- public:
- STATIC_CONST( SignalLength = 1 );
- Uint32 unused;
- };
- class SumaHandoverReq {
- public:
- STATIC_CONST( SignalLength = 1 );
- Uint32 gci;
- };
- class SumaHandoverConf {
- public:
- STATIC_CONST( SignalLength = 1 );
- Uint32 gci;
- };
- #endif