mirror of
https://github.com/MariaDB/server.git
synced 2025-12-07 17:42:39 +03:00
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
This commit is contained in:
90
ndb/src/common/util/SocketClient.cpp
Normal file
90
ndb/src/common/util/SocketClient.cpp
Normal 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;
|
||||
}
|
||||
Reference in New Issue
Block a user