📄 sumaimpl.hpp
字号:
/* 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; union { // Haven't decide what to call it Uint32 senderData; Uint32 subscriberData; }; Uint32 err;};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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -