mariadb/ndb/include/mgmcommon/ConfigRetriever.hpp
unknown dc2544fdee WL 1748
ndb/include/kernel/signaldata/ApiRegSignalData.hpp:
  Added info about connected nodes to ApiRegConf
ndb/include/mgmapi/mgmapi.h:
  New mgmapi command to get nodeid dynamically
ndb/include/mgmapi/mgmapi_config_parameters.h:
  New config param to specify port on for transporter setup
ndb/include/mgmcommon/ConfigRetriever.hpp:
  added notetype to getConfig
ndb/include/portlib/NdbTCP.h:
  small detail
ndb/include/transporter/TransporterRegistry.hpp:
  changed performstates and interface to connect/disconnect transporters
  added TransporterService for transporter setup
  changed model for setting up transporters
ndb/src/common/mgmcommon/ConfigInfo.cpp:
  removed some config params as mandatory
ndb/src/common/mgmcommon/ConfigRetriever.cpp:
  added dynamic alloc of nodeid
ndb/src/common/mgmcommon/LocalConfig.cpp:
  added default localhost:2200 and dynamic id
ndb/src/common/transporter/TCP_Transporter.cpp:
  moved TCP hostname stuff from TCP_Transporter to parent class Transporter
  changed TCP connection setup to use just one port for all transporters
ndb/src/common/transporter/TCP_Transporter.hpp:
  moved TCP hostname stuff from TCP_Transporter to parent class Transporter
  changed TCP connection setup to use just one port for all transporters
ndb/src/common/transporter/Transporter.cpp:
  moved TCP hostname stuff from TCP_Transporter to parent class Transporter
  changed TCP connection setup to use just one port for all transporters
ndb/src/common/transporter/Transporter.hpp:
  moved TCP hostname stuff from TCP_Transporter to parent class Transporter
  changed TCP connection setup to use just one port for all transporters
ndb/src/common/transporter/TransporterRegistry.cpp:
  changed performstates and interface to connect/disconnect transporters
  added TransporterService for transporter setup
  changed model for setting up transporters
ndb/src/common/util/Makefile.am:
  New SocketAuthenticator
ndb/src/common/util/SocketServer.cpp:
  small detail
ndb/src/kernel/Makefile.am:
  small detail
ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp:
  new interface to performstates + cleanup
ndb/src/kernel/blocks/qmgr/QmgrMain.cpp:
  changed signal ApiRegConf
ndb/src/kernel/vm/ThreadConfig.cpp:
  changed naming
ndb/src/mgmapi/mgmapi.cpp:
  Use new Socket client
  New methid for allocating dynamic id
ndb/src/mgmsrv/MgmtSrvr.cpp:
  moved port setup from main.cpp to MgmtSrvr
  new method getNextFreeNodeId
ndb/src/mgmsrv/MgmtSrvr.hpp:
  ..
ndb/src/mgmsrv/Services.cpp:
  allocate new nodeid
ndb/src/mgmsrv/Services.hpp:
  ..
ndb/src/mgmsrv/main.cpp:
  moved setup port to MgmtSrvr.cpp
  Rearranged setup order
ndb/src/ndbapi/ClusterMgr.cpp:
  new API_REGCONF
ndb/src/ndbapi/ClusterMgr.hpp:
  bitmask to hold connected nodes
ndb/src/ndbapi/TransporterFacade.cpp:
  New transporter connect
ndb/src/ndbapi/TransporterFacade.hpp:
  removed function not used
ndb/src/kernel/main.cpp:
  new transporter setup
2004-06-23 00:48:07 +00:00

110 lines
3.2 KiB
C++

/* 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 ConfigRetriever_H
#define ConfigRetriever_H
#include <ndb_types.h>
#include <mgmapi.h>
/**
* @class ConfigRetriever
* @brief Used by nodes (DB, MGM, API) to get their config from MGM server.
*/
class ConfigRetriever {
public:
ConfigRetriever();
ConfigRetriever(const int id, const char* remoteHost, const int port);
~ConfigRetriever();
/**
* Read local config
* @return Own node id, -1 means fail
*/
int init(bool onlyNodeId = false);
/**
* Get configuration for current (nodeId given in local config file) node.
*
* Configuration is fetched from one MGM server configured in local config
* file. The method loops over all the configured MGM servers and tries
* to establish a connection. This is repeated until a connection is
* established, so the function hangs until a connection is established.
*
* @return ndb_mgm_configuration object if succeeded,
* NULL if erroneous local config file or configuration error.
*/
struct ndb_mgm_configuration * getConfig(int versionId, int nodeType);
const char * getErrorString();
/**
* Sets connectstring which can be used instead of local config file
*/
void setConnectString(const char * connectString);
/**
* Sets name of local config file (usually not needed)
*/
void setLocalConfigFileName(const char * connectString);
/**
* Sets connectstring which can be used instead of local config file
* environment variables and Ndb.cfg has precidence over this
*/
void setDefaultConnectString(const char * defaultConnectString);
/**
* @return Node id of this node (as stated in local config or connectString)
*/
inline Uint32 getOwnNodeId() { return _ownNodeId; }
/**
* Get config using socket
*/
struct ndb_mgm_configuration * getConfig(const char * mgmhost, short port,
int versionId, int nodetype);
/**
* Get config from file
*/
struct ndb_mgm_configuration * getConfig(const char * file, int versionId);
private:
char * errorString;
enum ErrorType {
CR_ERROR = 0,
CR_RETRY = 1
};
ErrorType latestErrorType;
void setError(ErrorType, const char * errorMsg);
char * _localConfigFileName;
struct LocalConfig * _localConfig;
int _ownNodeId;
char * m_connectString;
char * m_defaultConnectString;
/**
* Verify config
*/
bool verifyConfig(const struct ndb_mgm_configuration *, int type);
};
#endif