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

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 LIST_TABLES_HPP
  14. #define LIST_TABLES_HPP
  15. #include <Bitmask.hpp>
  16. #include "SignalData.hpp"
  17. /**
  18.  * It is convenient to pack request/response data per table in one
  19.  * 32-bit word...
  20.  */
  21. class ListTablesData {
  22. public:
  23.   static Uint32 getTableId(Uint32 data) {
  24.     return BitmaskImpl::getField(1, &data, 0, 12);
  25.   }
  26.   static void setTableId(Uint32& data, Uint32 val) {
  27.     BitmaskImpl::setField(1, &data, 0, 12, val);
  28.   }
  29.   static Uint32 getTableType(Uint32 data) {
  30.     return BitmaskImpl::getField(1, &data, 12, 8);
  31.   }
  32.   static void setTableType(Uint32& data, Uint32 val) {
  33.     BitmaskImpl::setField(1, &data, 12, 8, val);
  34.   }
  35.   static Uint32 getTableStore(Uint32 data) {
  36.     return BitmaskImpl::getField(1, &data, 20, 4);
  37.   }
  38.   static void setTableStore(Uint32& data, Uint32 val) {
  39.     BitmaskImpl::setField(1, &data, 20, 4, val);
  40.   }
  41.   static Uint32 getTableState(Uint32 data) {
  42.     return BitmaskImpl::getField(1, &data, 24, 4);
  43.   }
  44.   static void setTableState(Uint32& data, Uint32 val) {
  45.     BitmaskImpl::setField(1, &data, 24, 4, val);
  46.   }
  47.   static Uint32 getListNames(Uint32 data) {
  48.     return BitmaskImpl::getField(1, &data, 28, 1);
  49.   }
  50.   static void setListNames(Uint32& data, Uint32 val) {
  51.     BitmaskImpl::setField(1, &data, 28, 1, val);
  52.   }
  53.   static Uint32 getListIndexes(Uint32 data) {
  54.     return BitmaskImpl::getField(1, &data, 29, 1);
  55.   }
  56.   static void setListIndexes(Uint32& data, Uint32 val) {
  57.     BitmaskImpl::setField(1, &data, 29, 1, val);
  58.   }
  59. };
  60. class ListTablesReq {
  61.   /**
  62.    * Sender(s)
  63.    */
  64.   friend class Backup;
  65.   friend class Table;
  66.   friend class Suma;
  67.   
  68.   /**
  69.    * Reciver(s)
  70.    */
  71.   friend class Dbdict;
  72. public:
  73.   STATIC_CONST( SignalLength = 3 );
  74. public:  
  75.   Uint32 senderData;
  76.   Uint32 senderRef;
  77.   Uint32 requestData;
  78.   Uint32 getTableId() {
  79.     return ListTablesData::getTableId(requestData);
  80.   }
  81.   void setTableId(Uint32 val) {
  82.     ListTablesData::setTableId(requestData, val);
  83.   }
  84.   Uint32 getTableType() const {
  85.     return ListTablesData::getTableType(requestData);
  86.   }
  87.   void setTableType(Uint32 val) {
  88.     ListTablesData::setTableType(requestData, val);
  89.   }
  90.   Uint32 getListNames() const {
  91.     return ListTablesData::getListNames(requestData);
  92.   }
  93.   void setListNames(Uint32 val) {
  94.     ListTablesData::setListNames(requestData, val);
  95.   }
  96.   Uint32 getListIndexes() const {
  97.     return ListTablesData::getListIndexes(requestData);
  98.   }
  99.   void setListIndexes(Uint32 val) {
  100.     ListTablesData::setListIndexes(requestData, val);
  101.   }
  102. };
  103. class ListTablesConf {
  104.   /**
  105.    * Sender(s)
  106.    */
  107.   friend class Dbdict;
  108.   
  109.   /**
  110.    * Reciver(s)
  111.    */
  112.   friend class Backup;
  113.   friend class Table;
  114.   friend class Suma;
  115. public:
  116.   /**
  117.    * Note: last signal is indicated by having length < 25
  118.    */
  119.   STATIC_CONST( SignalLength = 25 );
  120.   STATIC_CONST( HeaderLength = 2  );
  121.   STATIC_CONST( DataLength   = 23 );
  122. public:  
  123.   Uint32 senderData;
  124.   Uint32 counter;
  125.   Uint32 tableData[DataLength];
  126.   static Uint32 getTableId(Uint32 data) {
  127.     return ListTablesData::getTableId(data);
  128.   }
  129.   void setTableId(unsigned pos, Uint32 val) {
  130.     ListTablesData::setTableId(tableData[pos], val);
  131.   }
  132.   static Uint32 getTableType(Uint32 data) {
  133.     return ListTablesData::getTableType(data);
  134.   }
  135.   void setTableType(unsigned pos, Uint32 val) {
  136.     ListTablesData::setTableType(tableData[pos], val);
  137.   }
  138.   static Uint32 getTableStore(Uint32 data) {
  139.     return ListTablesData::getTableStore(data);
  140.   }
  141.   void setTableStore(unsigned pos, Uint32 val) {
  142.     ListTablesData::setTableStore(tableData[pos], val);
  143.   }
  144.   static Uint32 getTableState(Uint32 data) {
  145.     return ListTablesData::getTableState(data);
  146.   }
  147.   void setTableState(unsigned pos, Uint32 val) {
  148.     ListTablesData::setTableState(tableData[pos], val);
  149.   }
  150. };
  151. #endif