📄 transporterdefinitions.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 TransporterDefinitions_H#define TransporterDefinitions_H#include <ndb_global.h> #include <kernel_types.h> #include <NdbOut.hpp>/** * The maximum number of transporters allowed * A maximum is needed to be able to allocate the array of transporters */const int MAX_NTRANSPORTERS = 128;/** * The sendbuffer limit after which the contents of the buffer is sent */const int TCP_SEND_LIMIT = 64000;enum SendStatus { SEND_OK = 0, SEND_BLOCKED = 1, SEND_DISCONNECTED = 2, SEND_BUFFER_FULL = 3, SEND_MESSAGE_TOO_BIG = 4, SEND_UNKNOWN_NODE = 5};/** * Protocol6 Header + * (optional signal id) + (optional checksum) + (signal data) *///const Uint32 MAX_MESSAGE_SIZE = (12+4+4+(4*25));const Uint32 MAX_MESSAGE_SIZE = (12+4+4+(4*25)+(3*4)+4*4096);/** * TransporterConfiguration * * used for setting up a transporter. the union member specific is for * information specific to a transporter type. */struct TransporterConfiguration { Int32 s_port; // negative port number implies dynamic port const char *remoteHostName; const char *localHostName; NodeId remoteNodeId; NodeId localNodeId; NodeId serverNodeId; bool checksum; bool signalId; bool isMgmConnection; // is a mgm connection, requires transforming union { // Transporter specific configuration information struct { Uint32 sendBufferSize; // Size of SendBuffer of priority B Uint32 maxReceiveSize; // Maximum no of bytes to receive } tcp; struct { Uint32 shmKey; Uint32 shmSize; int signum; } shm; struct { Uint32 prioASignalSize; Uint32 prioBSignalSize; } ose; struct { Uint32 sendLimit; // Packet size Uint32 bufferSize; // Buffer size Uint32 nLocalAdapters; // 1 or 2, the number of adapters on local host Uint32 remoteSciNodeId0; // SCInodeId for adapter 1 Uint32 remoteSciNodeId1; // SCInodeId for adapter 2 } sci; };};struct SignalHeader { Uint32 theVerId_signalNumber; // 4 bit ver id - 16 bit gsn Uint32 theReceiversBlockNumber; // Only 16 bit blocknum Uint32 theSendersBlockRef; Uint32 theLength; Uint32 theSendersSignalId; Uint32 theSignalId; Uint16 theTrace; Uint8 m_noOfSections; Uint8 m_fragmentInfo;}; /** 7x4 = 28 Bytes */struct LinearSectionPtr { Uint32 sz; Uint32 * p;};struct SegmentedSectionPtr { Uint32 sz; Uint32 i; struct SectionSegment * p; void setNull() { p = 0;} bool isNull() const { return p == 0;}};class NdbOut & operator <<(class NdbOut & out, SignalHeader & sh);#endif // Define of TransporterDefinitions_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -