ConfigRetriever.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 ConfigRetriever_H
  14. #define ConfigRetriever_H
  15. #include <ndb_types.h>
  16. #include <mgmapi.h>
  17. #include <BaseString.hpp>
  18. /**
  19.  * @class ConfigRetriever
  20.  * @brief Used by nodes (DB, MGM, API) to get their config from MGM server. 
  21.  */
  22. class ConfigRetriever {
  23. public:
  24.   ConfigRetriever(const char * _connect_string,
  25.   Uint32 version, Uint32 nodeType);
  26.   ~ConfigRetriever();
  27.   int do_connect(int no_retries, int retry_delay_in_seconds, int verbose);
  28.   
  29.   /**
  30.    * Get configuration for current node.
  31.    * 
  32.    * Configuration is fetched from one MGM server configured in local config 
  33.    * file.  The method loops over all the configured MGM servers and tries
  34.    * to establish a connection.  This is repeated until a connection is 
  35.    * established, so the function hangs until a connection is established.
  36.    * 
  37.    * @return ndb_mgm_configuration object if succeeded, 
  38.    *         NULL if erroneous local config file or configuration error.
  39.    */
  40.   struct ndb_mgm_configuration * getConfig();
  41.   
  42.   void resetError();
  43.   int hasError();
  44.   const char * getErrorString();
  45.   /**
  46.    * @return Node id of this node (as stated in local config or connectString)
  47.    */
  48.   Uint32 allocNodeId(int no_retries, int retry_delay_in_seconds);
  49.   int setNodeId(Uint32 nodeid);
  50.   /**
  51.    * Get config using socket
  52.    */
  53.   struct ndb_mgm_configuration * getConfig(NdbMgmHandle handle);
  54.   
  55.   /**
  56.    * Get config from file
  57.    */
  58.   struct ndb_mgm_configuration * getConfig(const char * file);
  59.   /**
  60.    * Verify config
  61.    */
  62.   bool verifyConfig(const struct ndb_mgm_configuration *, Uint32 nodeid);
  63.   Uint32 get_mgmd_port() const;
  64.   const char *get_mgmd_host() const;
  65.   const char *get_connectstring(char *buf, int buf_sz) const;
  66.   Uint32 get_configuration_nodeid() const;
  67. private:
  68.   BaseString errorString;
  69.   enum ErrorType {
  70.     CR_NO_ERROR = 0,
  71.     CR_ERROR = 1,
  72.     CR_RETRY = 2
  73.   };
  74.   ErrorType latestErrorType;
  75.   
  76.   void setError(ErrorType, const char * errorMsg);
  77.   
  78.   Uint32      _ownNodeId;
  79.   /*
  80.   Uint32      m_mgmd_port;
  81.   const char *m_mgmd_host;
  82.   */
  83.   Uint32 m_version;
  84.   Uint32 m_node_type;
  85.   NdbMgmHandle m_handle;
  86. };
  87. #endif