diff options
Diffstat (limited to 'ndb/src/kernel/vm/ClusterConfiguration.hpp')
-rw-r--r-- | ndb/src/kernel/vm/ClusterConfiguration.hpp | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/ndb/src/kernel/vm/ClusterConfiguration.hpp b/ndb/src/kernel/vm/ClusterConfiguration.hpp new file mode 100644 index 00000000000..cc7000a54ef --- /dev/null +++ b/ndb/src/kernel/vm/ClusterConfiguration.hpp @@ -0,0 +1,105 @@ +/* Copyright (C) 2003 MySQL AB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#ifndef ClusterConfiguration_H +#define ClusterConfiguration_H + +#include <kernel_types.h> +#include <ndb_limits.h> +#include <Properties.hpp> +#include <ErrorReporter.hpp> +#include <signaldata/CmvmiCfgConf.hpp> +#include <signaldata/SetLogLevelOrd.hpp> +#include <NodeInfo.hpp> + +// MaxNumber of sizealteration records in each block +// MaxNumber of blocks with sizealteration, (size of array) +#define MAX_SIZEALT_RECORD 16 +#define MAX_SIZEALT_BLOCKS 8 + +enum NdbBlockName { ACC = 0, DICT, DIH, LQH, TC, TUP, TUX, NDB_SIZEALT_OFF }; +// NDB_SIZEALT_OFF is used for block without sizealteration +// IMPORTANT to assign NDB_SIZEALT_OFF as largest value + +struct VarSize { + int nrr; + bool valid; +}; + +struct SizeAlt { + unsigned int noOfTables; + unsigned int noOfIndexes; + unsigned int noOfReplicas; + unsigned int noOfNDBNodes; + unsigned int noOfAPINodes; + unsigned int noOfMGMNodes; + unsigned int noOfNodes; + unsigned int noOfDiskLessNodes; + unsigned int noOfAttributes; + unsigned int noOfOperations; + unsigned int noOfTransactions; + unsigned int noOfIndexPages; + unsigned int noOfDataPages; + unsigned int noOfDiskBufferPages; + unsigned int noOfFreeClusters; + unsigned int noOfDiskClusters; + unsigned int noOfScanRecords; + bool exist; + VarSize varSize[MAX_SIZEALT_BLOCKS][MAX_SIZEALT_RECORD]; + unsigned short blockNo[MAX_SIZEALT_BLOCKS]; + LogLevel logLevel; +}; + + +class ClusterConfiguration +{ +public: + + struct NodeData { + NodeData() { + nodeId = MAX_NODES+1; + nodeType = NodeInfo::INVALID; + arbitRank = ~0; + } + NodeId nodeId; + NodeInfo::NodeType nodeType; + unsigned arbitRank; + }; + + struct ClusterData + { + SizeAlt SizeAltData; + NodeData nodeData[MAX_NODES]; + Uint32 ispValues[5][CmvmiCfgConf::NO_OF_WORDS]; + }; + + ClusterConfiguration(); + ~ClusterConfiguration(); + const ClusterData& clusterData() const; + + void init(const Properties & p, const Properties & db); +protected: + +private: + + ClusterData the_clusterData; + + void calcSizeAlteration(); + +}; + +#endif // ClusterConfiguration_H + |