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

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 ACC_LOCK_HPP
  14. #define ACC_LOCK_HPP
  15. #include "SignalData.hpp"
  16. /*
  17.  * Lock or unlock tuple.  If lock request is queued, the reply is later
  18.  * via ACCKEYCONF.
  19.  */
  20. class AccLockReq {
  21.   friend class Dbtux;
  22.   friend class Dbacc;
  23.   friend bool printACC_LOCKREQ(FILE *, const Uint32*, Uint32, Uint16);
  24. public:
  25.   enum RequestType {    // first byte
  26.     LockShared = 1,
  27.     LockExclusive = 2,
  28.     Unlock = 3,
  29.     Abort = 4,
  30.     AbortWithConf = 5
  31.   };
  32.   enum RequestFlag {    // second byte
  33.   };
  34.   enum ReturnCode {
  35.     Success = 0,
  36.     IsBlocked = 1,      // was put in lock queue
  37.     WouldBlock = 2,     // if we add non-blocking option
  38.     Refused = 3,
  39.     NoFreeOp = 4
  40.   };
  41.   STATIC_CONST( LockSignalLength = 12 );
  42.   STATIC_CONST( UndoSignalLength = 3 );
  43. private:
  44.   Uint32 returnCode;
  45.   Uint32 requestInfo;
  46.   Uint32 accOpPtr; 
  47.   // rest only if lock request
  48.   Uint32 userPtr;
  49.   Uint32 userRef;
  50.   Uint32 tableId;
  51.   Uint32 fragId;
  52.   Uint32 fragPtrI;
  53.   Uint32 hashValue;
  54.   Uint32 tupAddr;
  55.   Uint32 transId1;
  56.   Uint32 transId2;
  57. };
  58. #endif