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

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 REP_IMPL_HPP
  14. #define REP_IMPL_HPP
  15. #include "SignalData.hpp"
  16. #include <NodeBitmask.hpp>
  17. #include <ndb_limits.h>
  18. #include <debugger/GrepError.hpp>
  19. /**
  20.  * RecordType
  21.  * sz = no of elems in enum
  22.  * @todo support for meta_log must be added
  23.  */
  24. enum RecordType 
  25. {
  26.   DATA_SCAN = 0, 
  27.   DATA_LOG = 1, 
  28.   META_SCAN = 2, 
  29.   //  META_LOG = 3,  //removed META_LOG. not supported
  30.   RecordTypeSize = 3 // =4 if meta log is supported
  31. };
  32. /**
  33.  * Wait GCP
  34.  */
  35. class RepWaitGcpReq 
  36. {
  37.   /**
  38.    * Sender(s)/Reciver(s)
  39.    */
  40.   friend class Rep;
  41.   friend class GrepParticipant;
  42.   friend bool printREP_WAITGCP_REQ(FILE *, const Uint32 *, Uint32, Uint16);
  43. public:
  44.   STATIC_CONST( SignalLength = 5 );
  45.   Uint32 senderData;
  46.   Uint32 subscriptionId;
  47.   Uint32 subscriptionKey;
  48.   Uint32 gcp;
  49.   Uint32 senderNodeId;
  50. };
  51. class RepWaitGcpConf 
  52. {
  53.   /**
  54.    * Sender(s)/Reciver(s)
  55.    */
  56.   friend class Rep;
  57.   friend class GrepParticipant;
  58.   
  59.   friend bool printREP_WAITGCP_CONF(FILE *, const Uint32 *, Uint32, Uint16);
  60. public:
  61.   STATIC_CONST( SignalLength = 5 );
  62.   Uint32 senderData;
  63.   Uint32 senderRef;
  64.   Uint32 subscriptionId;
  65.   Uint32 subscriptionKey;
  66.   Uint32 senderNodeId;
  67. };
  68. class RepWaitGcpRef 
  69. {
  70.   /**
  71.    * Sender(s)/Reciver(s)
  72.    */
  73.   friend class Rep;
  74.   friend class GrepParticipant;
  75.   friend bool printREP_WAITGCP_REF(FILE *, const Uint32 *, Uint32, Uint16);
  76. public:
  77.   STATIC_CONST( SignalLength = 6 );
  78.   Uint32 senderData;
  79.   Uint32 senderRef;
  80.   Uint32 subscriptionId;
  81.   Uint32 subscriptionKey;
  82.   Uint32 senderNodeId;
  83.   GrepError::GE_Code err;
  84. };
  85. class RepGetGciReq 
  86. {
  87.   /**
  88.    * Sender(s)/Reciver(s)
  89.    */
  90.   friend class Rep;
  91.   friend class Grep;
  92.   
  93.   friend bool printREP_GET_GCI_REQ(FILE *, const Uint32 *, Uint32, Uint16);
  94.    
  95. public:
  96.   STATIC_CONST( SignalLength = 3 );
  97.   Uint32 senderData;
  98.   Uint32 senderRef;
  99.   Uint32 nodeGrp;
  100. };
  101. class RepGetGciConf 
  102. {
  103.   /**
  104.    * Sender(s)/Reciver(s)
  105.    */
  106.   friend class Rep;
  107.   
  108.   friend bool printREP_GET_GCI_CONF(FILE *, const Uint32 *, Uint32, Uint16);
  109.    
  110. public:
  111.   STATIC_CONST( SignalLength = 7 );
  112.   Uint32 senderData;
  113.   Uint32 senderRef;
  114.   Uint32 nodeGrp;
  115.   Uint32 firstPSGCI;
  116.   Uint32 lastPSGCI;
  117.   Uint32 firstSSGCI;
  118.   Uint32 lastSSGCI;
  119. };
  120. class RepGetGciRef 
  121. {
  122.   /**
  123.    * Sender(s)/Reciver(s)
  124.    */
  125.   friend class Rep;
  126.   
  127.   friend bool printREP_GET_GCI_REF(FILE *, const Uint32 *, Uint32, Uint16);
  128.    
  129. public:
  130.   STATIC_CONST( SignalLength = 8);
  131.   Uint32 senderData;
  132.   Uint32 senderRef;
  133.   Uint32 nodeGrp;
  134.   Uint32 firstPSGCI;
  135.   Uint32 lastPSGCI;
  136.   Uint32 firstSSGCI;
  137.   Uint32 lastSSGCI;
  138.   GrepError::GE_Code err;
  139. };
  140. class RepGetGciBufferReq {
  141.   /**
  142.    * Sender(s)/Reciver(s)
  143.    */
  144.   friend class Rep;
  145.   friend bool printREP_GET_GCIBUFFER_REQ(FILE *, const Uint32 *, 
  146.  Uint32, Uint16);
  147. public:
  148.   STATIC_CONST( SignalLength = 5 );
  149.   Uint32 senderRef;
  150.   Uint32 senderData;  
  151.   Uint32 firstGCI;
  152.   Uint32 lastGCI;
  153.   Uint32 nodeGrp;
  154. };
  155. class RepGetGciBufferConf {
  156.   /**
  157.    * Sender(s)/Reciver(s)
  158.    */
  159.   friend class Rep;
  160.   
  161.   friend bool printREP_GET_GCIBUFFER_CONF(FILE *, const Uint32 *, 
  162.   Uint32, Uint16);
  163. public:
  164.   STATIC_CONST( SignalLength = 8 );
  165.   Uint32 senderData;
  166.   Uint32 senderRef;
  167.   Uint32 firstPSGCI;
  168.   Uint32 lastPSGCI;
  169.   Uint32 firstSSGCI;
  170.   Uint32 lastSSGCI;
  171.   Uint32 currentGCIBuffer;
  172.   Uint32 nodeGrp;
  173. };
  174. class RepGetGciBufferRef 
  175. {
  176.   /**
  177.    * Sender(s)/Reciver(s)
  178.    */
  179.   friend class Rep;
  180.   
  181.   friend bool printREP_GET_GCIBUFFER_REF(FILE *, const Uint32 *, 
  182.  Uint32, Uint16);
  183.  
  184. public:
  185.   STATIC_CONST( SignalLength = 9 );
  186.   Uint32 senderData;
  187.   Uint32 senderRef;
  188.   Uint32 firstPSGCI;
  189.   Uint32 lastPSGCI;
  190.   Uint32 firstSSGCI;
  191.   Uint32 lastSSGCI;
  192.   Uint32 currentGCIBuffer;
  193.   Uint32 nodeGrp;
  194.   GrepError::GE_Code err;
  195. };
  196. class RepInsertGciBufferReq 
  197. {
  198.   /**
  199.    * Sender(s)/Reciver(s)
  200.    */
  201.   friend class Rep;
  202.   
  203.   friend bool printREP_INSERT_GCIBUFFER_REQ(FILE *, const Uint32 *, 
  204.     Uint32, Uint16);
  205.     
  206. public:
  207.   STATIC_CONST( SignalLength = 5 );
  208.   Uint32 senderData;
  209.   Uint32 senderRef;
  210.   Uint32 gci;
  211.   Uint32 nodeGrp;
  212.   Uint32 force;
  213. };
  214. class RepInsertGciBufferRef 
  215. {
  216.   /**
  217.    * Sender(s)/Reciver(s)
  218.    */
  219.   friend class Rep;
  220.   
  221.   friend bool printREP_INSERT_GCIBUFFER_REF(FILE *, const Uint32 *, 
  222.     Uint32, Uint16);
  223. public:
  224.   STATIC_CONST( SignalLength = 7 );
  225.   Uint32 senderData;
  226.   Uint32 senderRef;
  227.   Uint32 gci;
  228.   Uint32 nodeGrp;
  229.   Uint32 tableId;
  230.   Uint32 force;
  231.   GrepError::GE_Code err;
  232. };
  233. class RepInsertGciBufferConf 
  234. {
  235.   /**
  236.    * Sender(s)/Reciver(s)
  237.    */
  238.   friend class Rep;
  239.   
  240.   friend bool printREP_INSERT_GCIBUFFER_CONF(FILE *, const Uint32 *, 
  241.      Uint32, Uint16);
  242. public:
  243.   STATIC_CONST( SignalLength = 5 );  
  244.   Uint32 senderData;
  245.   Uint32 senderRef;
  246.   Uint32 gci;
  247.   Uint32 nodeGrp;
  248.   Uint32 force;
  249. };
  250. class RepClearPSGciBufferReq 
  251. {
  252.   /**
  253.    * Sender(s)/Reciver(s)
  254.    */
  255.   friend class Rep;
  256.   
  257.   friend bool printREP_CLEAR_PS_GCIBUFFER_REQ(FILE *, const Uint32 *, 
  258.       Uint32, Uint16);
  259. public:
  260.   STATIC_CONST( SignalLength = 5 );  
  261.   Uint32 senderData;
  262.   Uint32 senderRef;
  263.   Uint32 firstGCI;
  264.   Uint32 lastGCI;
  265.   Uint32 nodeGrp;
  266. };
  267. class RepClearPSGciBufferRef 
  268. {
  269.   /**
  270.    * Sender(s)/Reciver(s)
  271.    */
  272.   friend class Rep;
  273.   
  274.   friend bool printREP_CLEAR_PS_GCIBUFFER_REF(FILE *, const Uint32 *, 
  275.       Uint32, Uint16);
  276.   
  277. public:
  278.   STATIC_CONST( SignalLength = 7 );  
  279.   Uint32 senderData;
  280.   Uint32 senderRef;
  281.   Uint32 firstGCI;
  282.   Uint32 lastGCI;
  283.   Uint32 currentGCI;
  284.   Uint32 nodeGrp;
  285.   GrepError::GE_Code err;
  286. };
  287. class RepClearPSGciBufferConf 
  288. {
  289.   /**
  290.    * Sender(s)/Reciver(s)
  291.    */
  292.   friend class Rep;
  293.   
  294.   friend bool printREP_CLEAR_PS_GCIBUFFER_CONF(FILE *, const Uint32 *, 
  295.        Uint32, Uint16);
  296. public:
  297.   STATIC_CONST( SignalLength = 5 );  
  298.   Uint32 senderData;
  299.   Uint32 senderRef;
  300.   Uint32 firstGCI;
  301.   Uint32 lastGCI;
  302.   Uint32 nodeGrp;
  303. };
  304. class RepClearSSGciBufferReq 
  305. {
  306.   /**
  307.    * Sender(s)/Reciver(s)
  308.    */
  309.   friend class Rep;
  310.   
  311.   friend bool printREP_CLEAR_SS_GCIBUFFER_REQ(FILE *, const Uint32 *, 
  312.       Uint32, Uint16);
  313. public:
  314.   STATIC_CONST( SignalLength = 5 );  
  315.   Uint32 senderData;
  316.   Uint32 senderRef;
  317.   Uint32 firstGCI;
  318.   Uint32 lastGCI;
  319.   Uint32 nodeGrp;
  320. };
  321. class RepClearSSGciBufferRef 
  322. {
  323.   /**
  324.    * Sender(s)/Reciver(s)
  325.    */
  326.   friend class Rep;
  327.   
  328.   friend bool printREP_CLEAR_SS_GCIBUFFER_REF(FILE *, const Uint32 *, 
  329.       Uint32, Uint16);
  330.       
  331. public:
  332.   STATIC_CONST( SignalLength = 7 );  
  333.   Uint32 senderData;
  334.   Uint32 senderRef;
  335.   Uint32 firstGCI;
  336.   Uint32 lastGCI;
  337.   Uint32 currentGCI;
  338.   Uint32 nodeGrp;
  339.   GrepError::GE_Code err;
  340. };
  341. class RepClearSSGciBufferConf 
  342. {
  343.   /**
  344.    * Sender(s)/Reciver(s)
  345.    */
  346.   friend class Rep;
  347.   
  348.   friend bool printREP_CLEAR_SS_GCIBUFFER_CONF(FILE *, const Uint32 *, 
  349.        Uint32, Uint16);
  350. public:
  351.   STATIC_CONST( SignalLength = 5 );  
  352.   Uint32 senderData;
  353.   Uint32 senderRef;
  354.   Uint32 firstGCI;
  355.   Uint32 lastGCI;
  356.   Uint32 nodeGrp;
  357. };
  358. class RepDataPage 
  359. {
  360.   /**
  361.    * Sender(s)/Reciver(s)
  362.    */
  363.   friend class Rep;
  364.   
  365.   friend bool printREP_DATA_PAGE(FILE *, const Uint32 *, Uint32, Uint16);
  366.  
  367. public:
  368.   STATIC_CONST( SignalLength = 4 );
  369.   Uint32 senderData;
  370.   Uint32 senderRef;
  371.   Uint32 nodeGrp;
  372.   Uint32 gci;  
  373. };
  374. class RepGciBufferAccRep 
  375. {
  376.   /**
  377.    * Sender(s)/Reciver(s)
  378.    */
  379.   friend class Rep;
  380.   
  381.   friend bool printREP_GCIBUFFER_ACC_REP(FILE *, const Uint32 *, 
  382.  Uint32, Uint16);
  383. public:
  384.   STATIC_CONST( SignalLength = 5 );
  385.   Uint32 senderData;
  386.   Uint32 senderRef;
  387.   Uint32 nodeGrp;
  388.   Uint32 gci;  
  389.   Uint32 totalSentBytes;  
  390. };
  391. class RepDropTableReq 
  392. {
  393.   /**
  394.    * Sender(s)/Reciver(s)
  395.    */
  396.   friend class Rep;
  397.   
  398.   friend bool printREP_DROP_TABLE_REQ(FILE *, const Uint32 *, 
  399.       Uint32, Uint16);
  400.   
  401. public:
  402.   STATIC_CONST( SignalLength = 4 );
  403.   Uint32 tableId;
  404.   //  char   tableName[MAX_TAB_NAME_SIZE]; 
  405. };
  406. class RepDropTableRef 
  407. {
  408.   /**
  409.    * Sender(s)/Reciver(s)
  410.    */
  411.   friend class Rep;
  412.   
  413.   friend bool printREP_DROP_TABLE_REF(FILE *, const Uint32 *, 
  414.       Uint32, Uint16);
  415.       
  416. public:
  417.   STATIC_CONST( SignalLength = 4 );
  418.   Uint32 tableId;
  419.   // char   tableName[MAX_TAB_NAME_SIZE]; 
  420. };
  421. class RepDropTableConf 
  422. {
  423.   /**
  424.    * Sender(s)/Reciver(s)
  425.    */
  426.   friend class Rep;
  427.   
  428.   friend bool printREP_DROP_TABLE_CONF(FILE *, const Uint32 *, Uint32, Uint16);
  429.       
  430. public:
  431.   STATIC_CONST( SignalLength = 4 );
  432.   Uint32 tableId;
  433.   //char   tableName[MAX_TAB_NAME_SIZE]; 
  434. };
  435. class RepDisconnectRep 
  436. {
  437.   /**
  438.    * Sender(s)/Reciver(s)
  439.    */
  440.   friend class Rep;
  441.   friend class Grep;
  442.   
  443.   friend bool printREP_DISCONNECT_REP(FILE *, const Uint32 *, Uint32, Uint16);
  444.       
  445. public:
  446.   enum NodeType {
  447.     DB = 0,
  448.     REP = 1
  449.   };
  450.   STATIC_CONST( SignalLength = 7 );
  451.   Uint32 senderData;
  452.   Uint32 senderRef;
  453.   Uint32 nodeId;
  454.   Uint32 nodeType;
  455.   Uint32 subId;
  456.   Uint32 subKey;
  457.   Uint32 err;
  458. };
  459. #endif