1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-24 14:48:09 +03:00
Files
mariadb/ndb/include/util/SocketClient.hpp
unknown 8deeb2f95b Bug #25487 deleting ndb_cluster_connection object takes long time
aim is to:
  a) if set_connect_timeout called, timeout connect attempt (for retry on
  next call) after timeout period
  b) preserve existing blocking behaviour otherwise (for, e.g. mgmapi)
  
  Related to customer issue with long time deleting ndb_cluster_connection
  object. believe we're hanging on the connect(2) call until timeout (when
  we then realise we should exit the thread).


ndb/include/mgmapi/mgmapi.h:
  add ndb_mgm_set_connect_timeout
ndb/include/util/SocketClient.hpp:
  add timeout (seconds) for max time to wait for connection
ndb/src/common/transporter/Transporter.cpp:
  set limit on amount of time we'll wait for tcp connect
ndb/src/common/util/SocketClient.cpp:
  only try to connect for a maximum of timeout time
ndb/src/mgmapi/mgmapi.cpp:
  add ndb_mgm_set_connect_timeout
2007-01-23 17:07:09 +11:00

49 lines
1.6 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; version 2 of the License.
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 SOCKET_CLIENT_HPP
#define SOCKET_CLIENT_HPP
#include <NdbTCP.h>
class SocketAuthenticator;
class SocketClient
{
NDB_SOCKET_TYPE m_sockfd;
struct sockaddr_in m_servaddr;
unsigned int m_connect_timeout_sec;
unsigned short m_port;
char *m_server_name;
SocketAuthenticator *m_auth;
public:
SocketClient(const char *server_name, unsigned short port, SocketAuthenticator *sa = 0);
~SocketClient();
bool init();
void set_port(unsigned short port) {
m_port = port;
m_servaddr.sin_port = htons(m_port);
};
void set_connect_timeout(unsigned int s) {
m_connect_timeout_sec= s;
}
unsigned short get_port() { return m_port; };
char *get_server_name() { return m_server_name; };
int bind(const char* toaddress, unsigned short toport);
NDB_SOCKET_TYPE connect(const char* toaddress = 0, unsigned short port = 0);
bool close();
};
#endif // SOCKET_ClIENT_HPP