1
0
mirror of https://github.com/MariaDB/server.git synced 2025-12-07 17:42:39 +03:00
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
This commit is contained in:
unknown
2004-06-23 00:48:07 +00:00
parent fb89fac462
commit dc2544fdee
35 changed files with 1195 additions and 873 deletions

View File

@@ -0,0 +1,90 @@
/* 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 */
#include <ndb_global.h>
#include <NdbOut.hpp>
#include <SocketClient.hpp>
#include <SocketAuthenticator.hpp>
SocketClient::SocketClient(const char *server_name, unsigned short port, SocketAuthenticator *sa)
{
m_auth= sa;
m_port= port;
m_server_name= strdup(server_name);
m_sockfd= -1;
}
SocketClient::~SocketClient()
{
if (m_server_name)
free(m_server_name);
if (m_sockfd >= 0)
NDB_CLOSE_SOCKET(m_sockfd);
if (m_auth)
delete m_auth;
}
bool
SocketClient::init()
{
if (m_sockfd >= 0)
NDB_CLOSE_SOCKET(m_sockfd);
memset(&m_servaddr, 0, sizeof(m_servaddr));
m_servaddr.sin_family = AF_INET;
m_servaddr.sin_port = htons(m_port);
// Convert ip address presentation format to numeric format
if (Ndb_getInAddr(&m_servaddr.sin_addr, m_server_name))
return false;
m_sockfd= socket(AF_INET, SOCK_STREAM, 0);
if (m_sockfd == NDB_INVALID_SOCKET) {
return false;
}
return true;
}
NDB_SOCKET_TYPE
SocketClient::connect()
{
if (m_sockfd < 0)
{
if (!init()) {
ndbout << "SocketClient::connect() failed " << m_server_name << " " << m_port << endl;
return -1;
}
}
const int r = ::connect(m_sockfd, (struct sockaddr*) &m_servaddr, sizeof(m_servaddr));
if (r == -1)
return -1;
if (m_auth)
if (!m_auth->client_authenticate(m_sockfd))
{
NDB_CLOSE_SOCKET(m_sockfd);
m_sockfd= -1;
return -1;
}
NDB_SOCKET_TYPE sockfd= m_sockfd;
m_sockfd= -1;
return sockfd;
}