TransporterDefinitions.hpp
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2003 MySQL AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. #ifndef TransporterDefinitions_H
  14. #define TransporterDefinitions_H
  15. #include <ndb_global.h> 
  16. #include <kernel_types.h> 
  17. #include <NdbOut.hpp>
  18. /**
  19.  * The maximum number of transporters allowed
  20.  * A maximum is needed to be able to allocate the array of transporters
  21.  */
  22. const int MAX_NTRANSPORTERS = 128;
  23. /**
  24.  * The sendbuffer limit after which the contents of the buffer is sent
  25.  */
  26. const int TCP_SEND_LIMIT = 64000;
  27. enum SendStatus { 
  28.   SEND_OK = 0, 
  29.   SEND_BLOCKED = 1, 
  30.   SEND_DISCONNECTED = 2, 
  31.   SEND_BUFFER_FULL = 3,
  32.   SEND_MESSAGE_TOO_BIG = 4,
  33.   SEND_UNKNOWN_NODE = 5
  34. };
  35. /**
  36.  * Protocol6 Header + 
  37.  *  (optional signal id) + (optional checksum) + (signal data)
  38.  */
  39. //const Uint32 MAX_MESSAGE_SIZE = (12+4+4+(4*25));
  40. const Uint32 MAX_MESSAGE_SIZE = (12+4+4+(4*25)+(3*4)+4*4096);
  41. /**
  42.  * TCP Transporter Configuration
  43.  */
  44. struct TCP_TransporterConfiguration {
  45.   Uint32 port; 
  46.   const char *remoteHostName;
  47.   const char *localHostName;
  48.   NodeId remoteNodeId;
  49.   NodeId localNodeId;
  50.   Uint32 sendBufferSize;     // Size of SendBuffer of priority B 
  51.   Uint32 maxReceiveSize;     // Maximum no of bytes to receive
  52.   bool checksum;
  53.   bool signalId;
  54. };
  55. /**
  56.  * SHM Transporter Configuration
  57.  */
  58. struct SHM_TransporterConfiguration {
  59.   Uint32 port; 
  60.   const char *remoteHostName;
  61.   const char *localHostName;
  62.   NodeId remoteNodeId;
  63.   NodeId localNodeId;
  64.   bool checksum;
  65.   bool signalId;
  66.   
  67.   Uint32 shmKey;
  68.   Uint32 shmSize;
  69.   int    signum;
  70. };
  71. /**
  72.  * OSE Transporter Configuration
  73.  */
  74. struct OSE_TransporterConfiguration {
  75.   const char *remoteHostName;
  76.   const char *localHostName;
  77.   NodeId remoteNodeId;
  78.   NodeId localNodeId;
  79.   bool checksum;
  80.   bool signalId;
  81.   
  82.   Uint32 prioASignalSize;
  83.   Uint32 prioBSignalSize;
  84.   Uint32 receiveBufferSize; // In number of signals
  85. };
  86. /**
  87.  * SCI Transporter Configuration
  88.  */
  89. struct SCI_TransporterConfiguration {
  90.   const char *remoteHostName;
  91.   const char *localHostName;
  92.   Uint32 port; 
  93.   Uint32 sendLimit;        // Packet size
  94.   Uint32 bufferSize;       // Buffer size
  95.   Uint32 nLocalAdapters;   // 1 or 2, the number of adapters on local host
  96.   
  97.   Uint32 remoteSciNodeId0; // SCInodeId for adapter 1
  98.   Uint32 remoteSciNodeId1; // SCInodeId for adapter 2
  99.   
  100.   NodeId localNodeId;      // Local node Id
  101.   NodeId remoteNodeId;     // Remote node Id
  102.   bool checksum;
  103.   bool signalId;
  104. };
  105. struct SignalHeader {
  106.   Uint32 theVerId_signalNumber;    // 4 bit ver id - 16 bit gsn
  107.   Uint32 theReceiversBlockNumber;  // Only 16 bit blocknum  
  108.   Uint32 theSendersBlockRef;
  109.   Uint32 theLength;
  110.   Uint32 theSendersSignalId;
  111.   Uint32 theSignalId;
  112.   Uint16 theTrace;
  113.   Uint8  m_noOfSections;
  114.   Uint8  m_fragmentInfo;
  115. }; /** 7x4 = 28 Bytes */
  116. struct LinearSectionPtr {
  117.   Uint32 sz;
  118.   Uint32 * p;
  119. };
  120. struct SegmentedSectionPtr {
  121.   Uint32 sz;
  122.   Uint32 i;
  123.   struct SectionSegment * p;
  124.   void setNull() { p = 0;}
  125.   bool isNull() const { return p == 0;}
  126. };
  127. class NdbOut & operator <<(class NdbOut & out, SignalHeader & sh);
  128. #endif // Define of TransporterDefinitions_H