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

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 BACKUP_IMPL_HPP
  14. #define BACKUP_IMPL_HPP
  15. #include "SignalData.hpp"
  16. #include <NodeBitmask.hpp>
  17. class DefineBackupReq {
  18.   /**
  19.    * Sender(s)
  20.    */
  21.   friend class BackupMaster;
  22.   
  23.   /**
  24.    * Reciver(s)
  25.    */
  26.   friend class Backup;
  27.   friend bool printDEFINE_BACKUP_REQ(FILE *, const Uint32 *, Uint32, Uint16);
  28. public:
  29.   STATIC_CONST( SignalLength = 9 + NdbNodeBitmask::Size);
  30. private:
  31.   /**
  32.    * i - value of backup object
  33.    */
  34.   Uint32 backupPtr;
  35.   Uint32 backupId;
  36.   Uint32 clientRef;
  37.   Uint32 clientData;
  38.   Uint32 senderRef;
  39.   
  40.   /**
  41.    * Which node(s) is participating in the backup
  42.    */
  43.   NdbNodeBitmask nodes;
  44.   
  45.   /**
  46.    * Generated random number
  47.    */
  48.   Uint32 backupKey[2];
  49.   
  50.   /**
  51.    * Length of backup data
  52.    */
  53.   Uint32 backupDataLen;
  54.   /**
  55.    * Backup flags
  56.    */
  57.   /* & 0x3 - waitCompleted
  58.    */
  59.   Uint32 flags;
  60. };
  61. class DefineBackupRef {
  62.   /**
  63.    * Sender(s)
  64.    */
  65.   friend class Backup;
  66.   
  67.   /**
  68.    * Reciver(s)
  69.    */
  70.   friend class BackupMaster;
  71.   friend bool printDEFINE_BACKUP_REF(FILE *, const Uint32 *, Uint32, Uint16);
  72. public:
  73.   STATIC_CONST( SignalLength = 4 );
  74.   
  75.   enum ErrorCode {
  76.     Undefined = 1340,
  77.     FailedToAllocateBuffers = 1342,
  78.     FailedToSetupFsBuffers = 1343,
  79.     FailedToAllocateTables = 1344,
  80.     FailedInsertFileHeader = 1345,
  81.     FailedInsertTableList = 1346,
  82.     FailedAllocateTableMem = 1347,
  83.     FailedToAllocateFileRecord = 1348,
  84.     FailedToAllocateAttributeRecord = 1349
  85.   };
  86. private:
  87.   Uint32 backupId;
  88.   Uint32 backupPtr;
  89.   Uint32 errorCode;
  90.   Uint32 nodeId;
  91. };
  92. class DefineBackupConf {
  93.   /**
  94.    * Sender(s)
  95.    */
  96.   friend class Backup;
  97.   
  98.   /**
  99.    * Reciver(s)
  100.    */
  101.   friend class BackupMaster;
  102.   friend bool printDEFINE_BACKUP_CONF(FILE *, const Uint32 *, Uint32, Uint16);
  103. public:
  104.   STATIC_CONST( SignalLength = 2 );
  105.   
  106. private:
  107.   Uint32 backupId;
  108.   Uint32 backupPtr;
  109. };
  110. class StartBackupReq {
  111.   /**
  112.    * Sender(s)
  113.    */
  114.   friend class BackupMaster;
  115.   
  116.   /**
  117.    * Reciver(s)
  118.    */
  119.   friend class Backup;
  120.   friend bool printSTART_BACKUP_REQ(FILE *, const Uint32 *, Uint32, Uint16);
  121. public:
  122.   STATIC_CONST( MaxTableTriggers = 4 );
  123.   STATIC_CONST( HeaderLength = 5 );
  124.   STATIC_CONST( TableTriggerLength = 4);
  125.   
  126. private:
  127.   Uint32 backupId;
  128.   Uint32 backupPtr;
  129.   Uint32 signalNo;
  130.   Uint32 noOfSignals;
  131.   Uint32 noOfTableTriggers;
  132.   struct TableTriggers {
  133.     Uint32 tableId;
  134.     Uint32 triggerIds[3];
  135.   } tableTriggers[MaxTableTriggers];
  136. };
  137. class StartBackupRef {
  138.   /**
  139.    * Sender(s)
  140.    */
  141.   friend class Backup;
  142.   
  143.   /**
  144.    * Reciver(s)
  145.    */
  146.   friend class BackupMaster;
  147.   friend bool printSTART_BACKUP_REF(FILE *, const Uint32 *, Uint32, Uint16);
  148. public:
  149.   STATIC_CONST( SignalLength = 5 );
  150.   enum ErrorCode {
  151.     FailedToAllocateTriggerRecord = 1
  152.   };
  153. private:
  154.   Uint32 backupId;
  155.   Uint32 backupPtr;
  156.   Uint32 signalNo;
  157.   Uint32 errorCode;
  158.   Uint32 nodeId;
  159. };
  160. class StartBackupConf {
  161.   /**
  162.    * Sender(s)
  163.    */
  164.   friend class Backup;
  165.   
  166.   /**
  167.    * Reciver(s)
  168.    */
  169.   friend class BackupMaster;
  170.   friend bool printSTART_BACKUP_CONF(FILE *, const Uint32 *, Uint32, Uint16);
  171. public:
  172.   STATIC_CONST( SignalLength = 3 );
  173. private:
  174.   Uint32 backupId;
  175.   Uint32 backupPtr;
  176.   Uint32 signalNo;
  177. };
  178. class BackupFragmentReq {
  179.   /**
  180.    * Sender(s)
  181.    */
  182.   friend class BackupMaster;
  183.   
  184.   /**
  185.    * Reciver(s)
  186.    */
  187.   friend class Backup;
  188.   friend bool printBACKUP_FRAGMENT_REQ(FILE *, const Uint32 *, Uint32, Uint16);
  189. public:
  190.   STATIC_CONST( SignalLength = 5 );
  191. private:
  192.   Uint32 backupId;
  193.   Uint32 backupPtr;
  194.   Uint32 tableId;
  195.   Uint32 fragmentNo;
  196.   Uint32 count;
  197. };
  198. class BackupFragmentRef {
  199.   /**
  200.    * Sender(s)
  201.    */
  202.   friend class Backup;
  203.   
  204.   /**
  205.    * Reciver(s)
  206.    */
  207.   friend class BackupMaster;
  208.   friend bool printBACKUP_FRAGMENT_REF(FILE *, const Uint32 *, Uint32, Uint16);
  209. public:
  210.   STATIC_CONST( SignalLength = 5 );
  211. private:
  212.   Uint32 backupId;
  213.   Uint32 backupPtr;
  214.   Uint32 errorCode;
  215.   Uint32 nodeId;
  216. };
  217. class BackupFragmentConf {
  218.   /**
  219.    * Sender(s)
  220.    */
  221.   friend class Backup;
  222.   
  223.   /**
  224.    * Reciver(s)
  225.    */
  226.   friend class BackupMaster;
  227.   friend bool printBACKUP_FRAGMENT_CONF(FILE *, const Uint32 *, Uint32, Uint16);
  228. public:
  229.   STATIC_CONST( SignalLength = 6 );
  230. private:
  231.   Uint32 backupId;
  232.   Uint32 backupPtr;
  233.   Uint32 tableId;
  234.   Uint32 fragmentNo;
  235.   Uint32 noOfRecords;
  236.   Uint32 noOfBytes;
  237. };
  238. class StopBackupReq {
  239.   /**
  240.    * Sender(s)
  241.    */
  242.   friend class BackupMaster;
  243.   
  244.   /**
  245.    * Reciver(s)
  246.    */
  247.   friend class Backup;
  248.   friend bool printSTOP_BACKUP_REQ(FILE *, const Uint32 *, Uint32, Uint16);
  249. public:
  250.   STATIC_CONST( SignalLength = 4 );
  251. private:
  252.   Uint32 backupId;
  253.   Uint32 backupPtr;
  254.   Uint32 startGCP;
  255.   Uint32 stopGCP;
  256. };
  257. class StopBackupRef {
  258.   /**
  259.    * Sender(s)
  260.    */
  261.   friend class Backup;
  262.   
  263.   /**
  264.    * Reciver(s)
  265.    */
  266.   friend class BackupMaster;
  267.   friend bool printSTOP_BACKUP_REF(FILE *, const Uint32 *, Uint32, Uint16);
  268. public:
  269.   STATIC_CONST( SignalLength = 4 );
  270. private:
  271.   Uint32 backupId;
  272.   Uint32 backupPtr;
  273.   Uint32 errorCode;
  274.   Uint32 nodeId;
  275. };
  276. class StopBackupConf {
  277.   /**
  278.    * Sender(s)
  279.    */
  280.   friend class Backup;
  281.   
  282.   /**
  283.    * Reciver(s)
  284.    */
  285.   friend class BackupMaster;
  286.   friend bool printSTOP_BACKUP_CONF(FILE *, const Uint32 *, Uint32, Uint16);
  287. public:
  288.   STATIC_CONST( SignalLength = 4 );
  289.   
  290. private:
  291.   Uint32 backupId;
  292.   Uint32 backupPtr;
  293.   Uint32 noOfLogBytes;
  294.   Uint32 noOfLogRecords;
  295. };
  296. class BackupStatusReq {
  297.   /**
  298.    * Sender(s)
  299.    */
  300.   friend class BackupMaster;
  301.   
  302.   /**
  303.    * Reciver(s)
  304.    */
  305.   friend class Backup;
  306.   friend bool printBACKUP_STATUS_REQ(FILE *, const Uint32 *, Uint32, Uint16);
  307. public:
  308.   STATIC_CONST( SignalLength = 1 );
  309. private:
  310. };
  311. class BackupStatusConf {
  312.   /**
  313.    * Sender(s)
  314.    */
  315.   friend class Backup;
  316.   
  317.   /**
  318.    * Reciver(s)
  319.    */
  320.   friend class BackupMaster;
  321.   friend bool printBACKUP_STATUS_CONF(FILE *, const Uint32 *, Uint32, Uint16);
  322. public:
  323.   STATIC_CONST( SignalLength = 1 );
  324. private:
  325. };
  326. #endif