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

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 UTIL_EXECUTE_HPP
  14. #define UTIL_EXECUTE_HPP
  15. #include "SignalData.hpp"
  16. #include <SimpleProperties.hpp>
  17. /**
  18.  * UTIL_EXECUTE_REQ, UTIL_EXECUTE_CONF, UTIL_EXECUTE_REF
  19.  */
  20. /**
  21.  * @class UtilExecuteReq
  22.  * @brief Execute transaction in Util block
  23.  *
  24.  * Data format:
  25.  * - UTIL_EXECUTE_REQ <prepareId> <ListOfAttributeHeaderValuePairs>
  26.  */
  27. class UtilExecuteReq {
  28.   /** Sender(s) / Receiver(s) */
  29.   friend class DbUtil;
  30.   friend class Trix;
  31.   /** For printing */
  32.   friend bool printUTIL_EXECUTE_REQ(FILE * output, const Uint32 * theData, 
  33.     Uint32 len, Uint16 receiverBlockNo);
  34. public:
  35.   STATIC_CONST( SignalLength = 3 );
  36.   STATIC_CONST( HEADER_SECTION = 0 );
  37.   STATIC_CONST( DATA_SECTION = 1 );
  38.   STATIC_CONST( NoOfSections = 2 );
  39.   GET_SET_SENDERREF
  40.   GET_SET_SENDERDATA
  41.   void setPrepareId(Uint32 pId) { prepareId = pId; }; // !! unsets release flag
  42.   Uint32 getPrepareId() { return prepareId & 0xFF; };
  43.   void setReleaseFlag() { prepareId |= 0x100; };
  44.   bool getReleaseFlag() { return (prepareId & 0x100) != 0; };
  45. private:
  46.   Uint32 senderData; // MUST be no 1!
  47.   Uint32 senderRef;
  48.   Uint32 prepareId;     // Which prepared transaction to execute
  49. };
  50. /**
  51.  * @class UtilExecuteConf
  52.  *
  53.  * Data format:
  54.  * - UTIL_PREPARE_CONF <UtilPrepareId> 
  55.  */
  56. class UtilExecuteConf {
  57.   /**
  58.    * Sender(s) / Receiver(s)
  59.    */
  60.   friend class DbUtil;
  61.   friend class Trix;
  62.   /**
  63.    * For printing
  64.    */
  65.   friend bool printUTIL_EXECUTE_CONF(FILE * output, 
  66.      const Uint32 * theData, 
  67.      Uint32 len, 
  68.      Uint16 receiverBlockNo);
  69. public:
  70.   STATIC_CONST( SignalLength = 1 );
  71.   GET_SET_SENDERDATA
  72. private:
  73.   Uint32 senderData; // MUST be no 1!
  74. };
  75. /**
  76.  * @class UtilExecuteRef
  77.  *
  78.  * Data format:
  79.  * - UTIL_PREPARE_REF 
  80.  */
  81. class UtilExecuteRef {
  82.   /**
  83.    * Sender(s) / Receiver(s)
  84.    */
  85.   friend class DbUtil;
  86.   friend class Trix;
  87.   /**
  88.    * For printing
  89.    */
  90.   friend bool printUTIL_EXECUTE_REF(FILE * output, 
  91.     const Uint32 * theData, 
  92.     Uint32 len, 
  93.     Uint16 receiverBlockNo);
  94. public:
  95.   STATIC_CONST( SignalLength = 3 );
  96.   enum ErrorCode {
  97.     IllegalKeyNumber = 1,
  98.     IllegalAttrNumber = 2,
  99.     TCError = 3,
  100.     IllegalPrepareId = 4,
  101.     AllocationError = 5,
  102.     MissingDataSection = 6,
  103.     MissingData = 7
  104.   };
  105.   GET_SET_SENDERDATA
  106.   GET_SET_ERRORCODE
  107.   GET_SET_TCERRORCODE
  108. private:
  109.   Uint32 senderData; // MUST be no 1!
  110.   Uint32 errorCode;
  111.   Uint32 TCErrorCode;
  112. };
  113. #endif