NdbRestarter.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 NDBT_RESTARTER_HPP
  14. #define NDBT_RESTARTER_HPP
  15. #include <mgmapi.h>
  16. #include <Vector.hpp>
  17. #include <BaseString.hpp>
  18. class NdbRestarter {
  19. public:
  20.   NdbRestarter(const char* _addr = 0);
  21.   ~NdbRestarter();
  22.   int getDbNodeId(int _i);
  23.   int restartOneDbNode(int _nodeId, 
  24.        bool initial = false, 
  25.        bool nostart = false, 
  26.        bool abort = false);
  27.   int restartAll(bool initial = false, 
  28.  bool nostart = false, 
  29.  bool abort = false);
  30.   
  31.   int startAll();
  32.   int startNodes(int * _nodes, int _num_nodes);
  33.   int waitClusterStarted(unsigned int _timeout = 120);
  34.   int waitClusterSingleUser(unsigned int _timeout = 120);
  35.   int waitClusterStartPhase(int _startphase, unsigned int _timeout = 120);
  36.   int waitClusterNoStart(unsigned int _timeout = 120);  
  37.   int waitNodesStarted(int * _nodes, int _num_nodes,
  38.        unsigned int _timeout = 120);
  39.   int waitNodesStartPhase(int * _nodes, int _num_nodes, 
  40.   int _startphase, unsigned int _timeout = 120);
  41.   int waitNodesNoStart(int * _nodes, int _num_nodes,
  42.        unsigned int _timeout = 120); 
  43.   int getNumDbNodes();
  44.   int insertErrorInNode(int _nodeId, int error);
  45.   int insertErrorInAllNodes(int error);
  46.   int enterSingleUserMode(int _nodeId);
  47.   int exitSingleUserMode();
  48.   int dumpStateOneNode(int _nodeId, int * _args, int _num_args);
  49.   int dumpStateAllNodes(int * _args, int _num_args);
  50.   int getMasterNodeId();
  51.   int getRandomNodeOtherNodeGroup(int nodeId, int randomNumber);
  52.   int getRandomNotMasterNodeId(int randomNumber);
  53.   
  54. protected:
  55.   int waitClusterState(ndb_mgm_node_status _status,
  56.        unsigned int _timeout,
  57.        int _startphase = -1);  
  58.   int waitNodesState(int * _nodes, int _num_nodes,
  59.      ndb_mgm_node_status _status,
  60.      unsigned int _timeout,
  61.      int _startphase = -1);
  62.   bool isConnected();
  63.   int connect();
  64.   void disconnect();
  65.   int getStatus();
  66.   
  67.   Vector<ndb_mgm_node_state> ndbNodes;
  68.   Vector<ndb_mgm_node_state> mgmNodes;
  69.   Vector<ndb_mgm_node_state> apiNodes;
  70.   
  71.   bool connected;
  72.   BaseString addr;
  73.   NdbMgmHandle handle;
  74.   ndb_mgm_configuration * m_config;
  75. protected:
  76.   ndb_mgm_configuration * getConfig();
  77. };
  78. #endif