#include <ndb_global.h>#include <ndb_net.h>#include <netdb.h>Include dependency graph for NdbTCP.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.
Defines | |
| #define | NDB_NONBLOCK O_NONBLOCK |
| #define | NDB_SOCKET_TYPE int |
| #define | NDB_INVALID_SOCKET -1 |
| #define | _NDB_CLOSE_SOCKET(x) ::close(x) |
| #define | InetErrno errno |
| #define | NDB_SOCKLEN_T SOCKET_SIZE_TYPE |
Functions | |
| int | Ndb_getInAddr (struct in_addr *dst, const char *address) |
| int | NDB_CLOSE_SOCKET (int fd) |
| int | Ndb_check_socket_hup (NDB_SOCKET_TYPE sock) |
| #define InetErrno errno |
Definition at line 69 of file NdbTCP.h.
Referenced by TCP_Transporter::doReceive(), TCP_Transporter::doSend(), TCP_Transporter::setSocketNonBlocking(), and TCP_Transporter::setSocketOptions().
| #define NDB_INVALID_SOCKET -1 |
Definition at line 66 of file NdbTCP.h.
Referenced by Ndb_mgmd_event_service::check_listeners(), SocketClient::connect(), Transporter::connect_client(), TransporterRegistry::connect_ndb_mgmd(), TCP_Transporter::disconnectImpl(), SocketServer::doAccept(), event_thread_run(), SocketClient::init(), Ndb_mgmd_event_service::log(), MgmtSrvr::MgmtSrvr(), ndb_mgm_connect(), ndb_mgm_convert_to_transporter(), ndb_mgm_create_handle(), ndb_mgm_disconnect(), ndb_mgm_listen_event_internal(), MgmApiSession::runSession(), TCP_Transporter::sendIsPossible(), SocketServer::setup(), SocketClient::SocketClient(), Ndb_mgmd_event_service::stop_sessions(), TCP_Transporter::TCP_Transporter(), MgmApiSession::transporter_connect(), SocketServer::tryBind(), MgmApiSession::~MgmApiSession(), SocketClient::~SocketClient(), and TCP_Transporter::~TCP_Transporter().
| #define NDB_NONBLOCK O_NONBLOCK |
Include files needed
Definition at line 64 of file NdbTCP.h.
Referenced by TCP_Transporter::setSocketNonBlocking().
| #define NDB_SOCKET_TYPE int |
Definition at line 65 of file NdbTCP.h.
Referenced by SocketClient::connect(), Transporter::connect_client(), TransporterRegistry::connect_ndb_mgmd(), SocketServer::doAccept(), Ndb_mgmd_event_service::log(), ndb_mgm_connect(), ndb_mgm_convert_to_transporter(), ndb_mgm_listen_event_internal(), SocketRegistry< T >::performReceive(), TransporterRegistry::performReceive(), TransporterRegistry::poll_TCP(), SocketRegistry< T >::pollSocketClients(), SocketServer::setup(), and SocketServer::tryBind().
| int Ndb_check_socket_hup | ( | NDB_SOCKET_TYPE | sock | ) |
Definition at line 87 of file NdbTCP.cpp.
References SOCKET_ERROR.
Referenced by ndb_mgm_is_connected().
00088 { 00089 #ifdef HAVE_POLL 00090 struct pollfd pfd[1]; 00091 int r; 00092 00093 pfd[0].fd= sock; 00094 pfd[0].events= POLLHUP | POLLIN | POLLOUT | POLLNVAL; 00095 pfd[0].revents= 0; 00096 r= poll(pfd,1,0); 00097 if(pfd[0].revents & (POLLHUP|POLLERR)) 00098 return 1; 00099 00100 return 0; 00101 #else /* HAVE_POLL */ 00102 fd_set readfds, writefds, errorfds; 00103 struct timeval tv= {0,0}; 00104 int s_err; 00105 int s_err_size= sizeof(s_err); 00106 00107 FD_ZERO(&readfds); 00108 FD_ZERO(&writefds); 00109 FD_ZERO(&errorfds); 00110 00111 FD_SET(sock, &readfds); 00112 FD_SET(sock, &writefds); 00113 FD_SET(sock, &errorfds); 00114 00115 if(select(1, &readfds, &writefds, &errorfds, &tv)<0) 00116 return 1; 00117 00118 if(FD_ISSET(sock,&errorfds)) 00119 return 1; 00120 00121 s_err=0; 00122 if (getsockopt(sock, SOL_SOCKET, SO_ERROR, (char*) &s_err, &s_err_size) != 0) 00123 return(1); 00124 00125 if (s_err) 00126 { /* getsockopt could succeed */ 00127 return(1); /* but return an error... */ 00128 } 00129 00130 return 0; 00131 #endif /* HAVE_POLL */ 00132 }
Here is the caller graph for this function:

| int NDB_CLOSE_SOCKET | ( | int | fd | ) |
Definition at line 59 of file NdbTCP.cpp.
References _NDB_CLOSE_SOCKET, and DBUG_PRINT.
Referenced by Ndb_mgmd_event_service::check_listeners(), SocketClient::connect(), Transporter::connect_client(), SHM_Transporter::connect_client_impl(), SCI_Transporter::connect_client_impl(), SHM_Transporter::connect_server_impl(), SCI_Transporter::connect_server_impl(), TCP_Transporter::disconnectImpl(), event_thread_run(), SocketClient::init(), Ndb_mgmd_event_service::log(), ndb_mgm_disconnect(), ndb_mgm_is_connected(), TransporterService::newSession(), MgmApiSession::runSession(), CPCDAPISession::runSession(), sessionThread_C(), SocketServer::setup(), Ndb_mgmd_event_service::stop_sessions(), SocketServer::tryBind(), MgmApiSession::~MgmApiSession(), SocketClient::~SocketClient(), and SocketServer::~SocketServer().
00060 { 00061 DBUG_PRINT("info", ("NDB_CLOSE_SOCKET(%d)", fd)); 00062 return _NDB_CLOSE_SOCKET(fd); 00063 }
Here is the caller graph for this function:

| int Ndb_getInAddr | ( | struct in_addr * | dst, | |
| const char * | address | |||
| ) |
Convert host name or ip address to in_addr
Returns 0 on success -1 on failure
Implemented as: gethostbyname if not success inet_addr
Definition at line 24 of file NdbTCP.cpp.
References NULL.
Referenced by MgmtSrvr::alloc_node_id(), checkTCPConstraints(), SocketClient::init(), SocketServer::setup(), Transporter::Transporter(), SocketServer::tryBind(), and ConfigRetriever::verifyConfig().
00024 { 00025 // DBUG_ENTER("Ndb_getInAddr"); 00026 { 00027 int tmp_errno; 00028 struct hostent tmp_hostent, *hp; 00029 char buff[GETHOSTBYNAME_BUFF_SIZE]; 00030 hp = my_gethostbyname_r(address,&tmp_hostent,buff,sizeof(buff), 00031 &tmp_errno); 00032 if (hp) 00033 { 00034 memcpy(dst, hp->h_addr, min(sizeof(*dst), (size_t) hp->h_length)); 00035 my_gethostbyname_r_free(); 00036 return 0; //DBUG_RETURN(0); 00037 } 00038 my_gethostbyname_r_free(); 00039 } 00040 /* Try it as aaa.bbb.ccc.ddd. */ 00041 dst->s_addr = inet_addr(address); 00042 if (dst->s_addr != 00043 #ifdef INADDR_NONE 00044 INADDR_NONE 00045 #else 00046 -1 00047 #endif 00048 ) 00049 { 00050 return 0; //DBUG_RETURN(0); 00051 } 00052 // DBUG_PRINT("error",("inet_addr(%s) - %d - %s", 00053 // address, errno, strerror(errno))); 00054 return -1; //DBUG_RETURN(-1); 00055 }
Here is the caller graph for this function:

1.4.7

