ClusterConfiguration.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 ClusterConfiguration_H
  14. #define ClusterConfiguration_H
  15. #include <kernel_types.h>
  16. #include <ndb_limits.h>
  17. #include <Properties.hpp>
  18. #include <ErrorReporter.hpp>
  19. #include <signaldata/CmvmiCfgConf.hpp>
  20. #include <signaldata/SetLogLevelOrd.hpp>
  21. #include <NodeInfo.hpp>
  22. // MaxNumber of sizealteration records in each block
  23. // MaxNumber of blocks with sizealteration, (size of array)
  24. #define MAX_SIZEALT_RECORD 16    
  25. #define MAX_SIZEALT_BLOCKS 8     
  26. enum NdbBlockName { ACC = 0, DICT, DIH, LQH, TC, TUP, TUX, NDB_SIZEALT_OFF };
  27. //  NDB_SIZEALT_OFF is used for block without sizealteration
  28. //  IMPORTANT to assign NDB_SIZEALT_OFF as largest value
  29. struct VarSize {
  30.   int   nrr;
  31.   bool   valid;
  32. };
  33. struct SizeAlt { 
  34.   unsigned int   noOfTables;
  35.   unsigned int   noOfIndexes;
  36.   unsigned int   noOfReplicas;
  37.   unsigned int   noOfNDBNodes;
  38.   unsigned int   noOfAPINodes;
  39.   unsigned int   noOfMGMNodes;
  40.   unsigned int   noOfNodes;
  41.   unsigned int   noOfDiskLessNodes;
  42.   unsigned int   noOfAttributes;
  43.   unsigned int   noOfOperations;
  44.   unsigned int   noOfTransactions;
  45.   unsigned int   noOfIndexPages;
  46.   unsigned int   noOfDataPages;
  47.   unsigned int   noOfDiskBufferPages;
  48.   unsigned int   noOfFreeClusters;
  49.   unsigned int   noOfDiskClusters;
  50.   unsigned int   noOfScanRecords;
  51.   bool       exist;
  52.   VarSize    varSize[MAX_SIZEALT_BLOCKS][MAX_SIZEALT_RECORD];
  53.   unsigned short blockNo[MAX_SIZEALT_BLOCKS];
  54.   LogLevel logLevel;
  55. };
  56. class ClusterConfiguration
  57. {
  58. public:
  59.   
  60.   struct NodeData {
  61.     NodeData() { 
  62.       nodeId = MAX_NODES+1;
  63.       nodeType = NodeInfo::INVALID;
  64.       arbitRank = ~0;
  65.     }
  66.     NodeId nodeId;
  67.     NodeInfo::NodeType nodeType;
  68.     unsigned arbitRank;
  69.   };
  70.   
  71.   struct ClusterData
  72.   {    
  73.     SizeAlt  SizeAltData;
  74.     NodeData nodeData[MAX_NODES];
  75.     Uint32   ispValues[5][CmvmiCfgConf::NO_OF_WORDS];
  76.   };
  77.   
  78.   ClusterConfiguration();
  79.   ~ClusterConfiguration();
  80.   const ClusterData& clusterData() const;
  81.   
  82.   void init(const Properties & p, const Properties & db);
  83. protected:
  84. private:
  85.   ClusterData the_clusterData;
  86.   void calcSizeAlteration();
  87. };
  88. #endif // ClusterConfiguration_H