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

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_HPP
  14. #define BACKUP_HPP
  15. #include "SignalData.hpp"
  16. #include <NodeBitmask.hpp>
  17. /**
  18.  * Request to start a backup
  19.  */
  20. class BackupReq {
  21.   /**
  22.    * Sender(s)
  23.    */
  24.   friend class MgmtSrvr;
  25.   
  26.   /**
  27.    * Reciver(s)
  28.    */
  29.   friend class Backup;
  30.   friend bool printBACKUP_REQ(FILE *, const Uint32 *, Uint32, Uint16);
  31. public:
  32.   STATIC_CONST( SignalLength = 3 );
  33. private:
  34.   Uint32 senderData;
  35.   Uint32 backupDataLen;
  36.   /* & 0x3 - waitCompleted
  37.    */
  38.   Uint32 flags;
  39. };
  40. class BackupData {
  41.   /**
  42.    * Sender(s)
  43.    */
  44.   friend class BackupMaster;
  45.   
  46.   /**
  47.    * Reciver(s)
  48.    */
  49.   friend class Backup;
  50.   friend bool printBACKUP_DATA(FILE *, const Uint32 *, Uint32, Uint16);
  51. public:
  52.   STATIC_CONST( SignalLength = 25 );
  53.   enum KeyValues {
  54.     /**
  55.      * Buffer(s) and stuff
  56.      */
  57.     BufferSize = 1, // In MB
  58.     BlockSize  = 2, // Write in chunks of this (in bytes)
  59.     MinWrite   = 3, // Minimum write as multiple of blocksize
  60.     MaxWrite   = 4, // Maximum write as multiple of blocksize
  61.     
  62.     // Max throughput
  63.     // Parallell files
  64.     
  65.     NoOfTables = 1000,
  66.     TableName  = 1001  // char*
  67.   };
  68. private:
  69.   enum RequestType {
  70.     ClientToMaster = 1,
  71.     MasterToSlave  = 2
  72.   };
  73.   Uint32 requestType;
  74.   
  75.   union {
  76.     Uint32 backupPtr;
  77.     Uint32 senderData;
  78.   };
  79.   Uint32 backupId;
  80.   /**
  81.    * totalLen = totalLen_offset >> 16
  82.    * offset = totalLen_offset & 0xFFFF
  83.    */
  84.   Uint32 totalLen_offset; 
  85.   
  86.   /**
  87.    * Length in this = signal->length() - 3
  88.    * Sender block ref = signal->senderBlockRef()
  89.    */
  90.   Uint32 backupData[21];
  91. };
  92. /**
  93.  * The request to start a backup was refused
  94.  */
  95. class BackupRef {
  96.   /**
  97.    * Sender(s)
  98.    */
  99.   friend class Backup;
  100.   
  101.   /**
  102.    * Reciver(s)
  103.    */
  104.   friend class MgmtSrvr;
  105.   friend bool printBACKUP_REF(FILE *, const Uint32 *, Uint32, Uint16);
  106. public:
  107.   STATIC_CONST( SignalLength = 3 );
  108. private:
  109.   enum ErrorCodes {
  110.     Undefined = 1300,
  111.     IAmNotMaster  = 1301,
  112.     OutOfBackupRecord = 1302,
  113.     OutOfResources = 1303,
  114.     SequenceFailure = 1304,
  115.     BackupDefinitionNotImplemented = 1305,
  116.     CannotBackupDiskless = 1306
  117.   };
  118.   Uint32 senderData;
  119.   Uint32 errorCode;
  120.   union {
  121.     Uint32 masterRef;
  122.   };
  123. };
  124. /**
  125.  * The backup has started
  126.  */
  127. class BackupConf {
  128.   /**
  129.    * Sender(s)
  130.    */ 
  131.   friend class Backup;
  132.  
  133.   /**
  134.    * Reciver(s)
  135.    */
  136.   friend class MgmtSrvr;
  137.   friend bool printBACKUP_CONF(FILE *, const Uint32 *, Uint32, Uint16);
  138. public:
  139.   STATIC_CONST( SignalLength = 2 + NdbNodeBitmask::Size );
  140.   
  141. private:
  142.   Uint32 senderData;
  143.   Uint32 backupId;
  144.   NdbNodeBitmask nodes;
  145. };
  146. /**
  147.  * A backup has been aborted
  148.  */
  149. class BackupAbortRep {
  150.   /**
  151.    * Sender(s)
  152.    */
  153.   friend class Backup;
  154.   
  155.   /**
  156.    * Reciver(s)
  157.    */
  158.   friend class MgmtSrvr;
  159.   friend bool printBACKUP_ABORT_REP(FILE *, const Uint32 *, Uint32, Uint16);
  160. public:
  161.   STATIC_CONST( SignalLength = 3 );
  162. private:
  163.   Uint32 senderData;
  164.   Uint32 backupId;
  165.   Uint32 reason;
  166. };
  167. /**
  168.  * A backup has been completed
  169.  */
  170. class BackupCompleteRep {
  171.   /**
  172.    * Sender(s)
  173.    */
  174.   friend class Backup;
  175.   
  176.   /**
  177.    * Reciver(s)
  178.    */
  179.   friend class MgmtSrvr;
  180.   friend bool printBACKUP_COMPLETE_REP(FILE *, const Uint32 *, Uint32, Uint16);
  181. public:
  182.   STATIC_CONST( SignalLength = 8 + NdbNodeBitmask::Size );
  183. private:
  184.   Uint32 senderData;
  185.   Uint32 backupId;
  186.   Uint32 startGCP;
  187.   Uint32 stopGCP;
  188.   Uint32 noOfBytes;
  189.   Uint32 noOfRecords;
  190.   Uint32 noOfLogBytes;
  191.   Uint32 noOfLogRecords;
  192.   NdbNodeBitmask nodes;
  193. };
  194. /**
  195.  * A master has finished taking-over backup responsiblility
  196.  */
  197. class BackupNFCompleteRep {
  198.   friend bool printBACKUP_NF_COMPLETE_REP(FILE*, const Uint32*, Uint32, Uint16);
  199. };
  200. /**
  201.  * Abort of backup
  202.  */
  203. class AbortBackupOrd {
  204.   /**
  205.    * Sender / Reciver
  206.    */
  207.   friend class Backup;
  208.   friend class MgmtSrvr;
  209.   friend bool printABORT_BACKUP_ORD(FILE *, const Uint32 *, Uint32, Uint16);
  210. public:
  211.   STATIC_CONST( SignalLength = 3 );
  212.   
  213.   enum RequestType {
  214.     ClientAbort = 1321,
  215.     BackupComplete = 1322,
  216.     BackupFailure = 1323,  // General backup failure coordinator -> slave
  217.     LogBufferFull = 1324,  //                        slave -> coordinator
  218.     FileOrScanError = 1325, //                       slave -> coordinator
  219.     BackupFailureDueToNodeFail = 1326, //             slave -> slave
  220.     OkToClean = 1327                  //             master -> slave
  221.     
  222.     ,AbortScan = 1328
  223.     ,IncompatibleVersions = 1329
  224.   };
  225. private:
  226.   Uint32 requestType;
  227.   Uint32 backupId;
  228.   union {
  229.     Uint32 backupPtr;
  230.     Uint32 senderData;
  231.   };
  232. };
  233. #endif