Use native C++ GSocket interface
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28679 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -230,7 +230,7 @@ wxSocketBase::~wxSocketBase()
|
|||||||
|
|
||||||
// Destroy the GSocket object
|
// Destroy the GSocket object
|
||||||
if (m_socket)
|
if (m_socket)
|
||||||
GSocket_destroy(m_socket);
|
delete m_socket;
|
||||||
|
|
||||||
// Free the pushback buffer
|
// Free the pushback buffer
|
||||||
if (m_unread)
|
if (m_unread)
|
||||||
@@ -283,11 +283,11 @@ bool wxSocketBase::Close()
|
|||||||
if (m_socket)
|
if (m_socket)
|
||||||
{
|
{
|
||||||
// Disable callbacks
|
// Disable callbacks
|
||||||
GSocket_UnsetCallback(m_socket, GSOCK_INPUT_FLAG | GSOCK_OUTPUT_FLAG |
|
m_socket->UnsetCallback(GSOCK_INPUT_FLAG | GSOCK_OUTPUT_FLAG |
|
||||||
GSOCK_LOST_FLAG | GSOCK_CONNECTION_FLAG);
|
GSOCK_LOST_FLAG | GSOCK_CONNECTION_FLAG);
|
||||||
|
|
||||||
// Shutdown the connection
|
// Shutdown the connection
|
||||||
GSocket_Shutdown(m_socket);
|
m_socket->Shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
m_connected = FALSE;
|
m_connected = FALSE;
|
||||||
@@ -341,9 +341,9 @@ wxUint32 wxSocketBase::_Read(void* buffer, wxUint32 nbytes)
|
|||||||
int ret;
|
int ret;
|
||||||
if (m_flags & wxSOCKET_NOWAIT)
|
if (m_flags & wxSOCKET_NOWAIT)
|
||||||
{
|
{
|
||||||
GSocket_SetNonBlocking(m_socket, 1);
|
m_socket->SetNonBlocking(1);
|
||||||
ret = GSocket_Read(m_socket, (char *)buffer, nbytes);
|
ret = m_socket->Read((char *)buffer, nbytes);
|
||||||
GSocket_SetNonBlocking(m_socket, 0);
|
m_socket->SetNonBlocking(0);
|
||||||
|
|
||||||
if (ret > 0)
|
if (ret > 0)
|
||||||
total += ret;
|
total += ret;
|
||||||
@@ -357,7 +357,7 @@ wxUint32 wxSocketBase::_Read(void* buffer, wxUint32 nbytes)
|
|||||||
if ( !(m_flags & wxSOCKET_BLOCK) && !WaitForRead() )
|
if ( !(m_flags & wxSOCKET_BLOCK) && !WaitForRead() )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
ret = GSocket_Read(m_socket, (char *)buffer, nbytes);
|
ret = m_socket->Read((char *)buffer, nbytes);
|
||||||
|
|
||||||
if (ret > 0)
|
if (ret > 0)
|
||||||
{
|
{
|
||||||
@@ -532,9 +532,9 @@ wxUint32 wxSocketBase::_Write(const void *buffer, wxUint32 nbytes)
|
|||||||
int ret;
|
int ret;
|
||||||
if (m_flags & wxSOCKET_NOWAIT)
|
if (m_flags & wxSOCKET_NOWAIT)
|
||||||
{
|
{
|
||||||
GSocket_SetNonBlocking(m_socket, 1);
|
m_socket->SetNonBlocking(1);
|
||||||
ret = GSocket_Write(m_socket, (const char *)buffer, nbytes);
|
ret = m_socket->Write((const char *)buffer, nbytes);
|
||||||
GSocket_SetNonBlocking(m_socket, 0);
|
m_socket->SetNonBlocking(0);
|
||||||
|
|
||||||
if (ret > 0)
|
if (ret > 0)
|
||||||
total = ret;
|
total = ret;
|
||||||
@@ -548,7 +548,7 @@ wxUint32 wxSocketBase::_Write(const void *buffer, wxUint32 nbytes)
|
|||||||
if ( !(m_flags & wxSOCKET_BLOCK) && !WaitForWrite() )
|
if ( !(m_flags & wxSOCKET_BLOCK) && !WaitForWrite() )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
ret = GSocket_Write(m_socket, (const char *)buffer, nbytes);
|
ret = m_socket->Write((const char *)buffer, nbytes);
|
||||||
|
|
||||||
if (ret > 0)
|
if (ret > 0)
|
||||||
{
|
{
|
||||||
@@ -693,7 +693,7 @@ bool wxSocketBase::_Wait(long seconds,
|
|||||||
timeout = m_timeout * 1000;
|
timeout = m_timeout * 1000;
|
||||||
|
|
||||||
#if !defined(wxUSE_GUI) || !wxUSE_GUI
|
#if !defined(wxUSE_GUI) || !wxUSE_GUI
|
||||||
GSocket_SetTimeout(m_socket, timeout);
|
m_socket->SetTimeout(timeout);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Wait in an active polling loop.
|
// Wait in an active polling loop.
|
||||||
@@ -711,7 +711,7 @@ bool wxSocketBase::_Wait(long seconds,
|
|||||||
|
|
||||||
while (!done)
|
while (!done)
|
||||||
{
|
{
|
||||||
result = GSocket_Select(m_socket, flags | GSOCK_LOST_FLAG);
|
result = m_socket->Select(flags | GSOCK_LOST_FLAG);
|
||||||
|
|
||||||
// Incoming connection (server) or connection established (client)
|
// Incoming connection (server) or connection established (client)
|
||||||
if (result & GSOCK_CONNECTION_FLAG)
|
if (result & GSOCK_CONNECTION_FLAG)
|
||||||
@@ -794,7 +794,7 @@ bool wxSocketBase::GetPeer(wxSockAddress& addr_man) const
|
|||||||
if (!m_socket)
|
if (!m_socket)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
peer = GSocket_GetPeer(m_socket);
|
peer = m_socket->GetPeer();
|
||||||
|
|
||||||
// copying a null address would just trigger an assert anyway
|
// copying a null address would just trigger an assert anyway
|
||||||
|
|
||||||
@@ -814,7 +814,7 @@ bool wxSocketBase::GetLocal(wxSockAddress& addr_man) const
|
|||||||
if (!m_socket)
|
if (!m_socket)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
local = GSocket_GetLocal(m_socket);
|
local = m_socket->GetLocal();
|
||||||
addr_man.SetAddress(local);
|
addr_man.SetAddress(local);
|
||||||
GAddress_destroy(local);
|
GAddress_destroy(local);
|
||||||
|
|
||||||
@@ -868,7 +868,7 @@ void wxSocketBase::SetTimeout(long seconds)
|
|||||||
m_timeout = seconds;
|
m_timeout = seconds;
|
||||||
|
|
||||||
if (m_socket)
|
if (m_socket)
|
||||||
GSocket_SetTimeout(m_socket, m_timeout * 1000);
|
m_socket->SetTimeout(m_timeout * 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxSocketBase::SetFlags(wxSocketFlags flags)
|
void wxSocketBase::SetFlags(wxSocketFlags flags)
|
||||||
@@ -928,12 +928,12 @@ void wxSocketBase::OnRequest(wxSocketNotify notification)
|
|||||||
// which are no longer valid.
|
// which are no longer valid.
|
||||||
|
|
||||||
case wxSOCKET_INPUT:
|
case wxSOCKET_INPUT:
|
||||||
if (m_reading || !GSocket_Select(m_socket, GSOCK_INPUT_FLAG))
|
if (m_reading || !m_socket->Select(GSOCK_INPUT_FLAG))
|
||||||
return;
|
return;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case wxSOCKET_OUTPUT:
|
case wxSOCKET_OUTPUT:
|
||||||
if (m_writing || !GSocket_Select(m_socket, GSOCK_OUTPUT_FLAG))
|
if (m_writing || !m_socket->Select(GSOCK_OUTPUT_FLAG))
|
||||||
return;
|
return;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -1067,23 +1067,23 @@ wxSocketServer::wxSocketServer(wxSockAddress& addr_man,
|
|||||||
|
|
||||||
// Setup the socket as server
|
// Setup the socket as server
|
||||||
|
|
||||||
GSocket_SetLocal(m_socket, addr_man.GetAddress());
|
m_socket->SetLocal(addr_man.GetAddress());
|
||||||
|
|
||||||
if (GetFlags() & wxSOCKET_REUSEADDR) {
|
if (GetFlags() & wxSOCKET_REUSEADDR) {
|
||||||
GSocket_SetReusable(m_socket);
|
m_socket->SetReusable();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GSocket_SetServer(m_socket) != GSOCK_NOERROR)
|
if (m_socket->SetServer() != GSOCK_NOERROR)
|
||||||
{
|
{
|
||||||
GSocket_destroy(m_socket);
|
delete m_socket;
|
||||||
m_socket = NULL;
|
m_socket = NULL;
|
||||||
|
|
||||||
wxLogTrace( wxTRACE_Socket, _T("*** GSocket_SetServer failed") );
|
wxLogTrace( wxTRACE_Socket, _T("*** GSocket_SetServer failed") );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
GSocket_SetTimeout(m_socket, m_timeout * 1000);
|
m_socket->SetTimeout(m_timeout * 1000);
|
||||||
GSocket_SetCallback(m_socket, GSOCK_INPUT_FLAG | GSOCK_OUTPUT_FLAG |
|
m_socket->SetCallback(GSOCK_INPUT_FLAG | GSOCK_OUTPUT_FLAG |
|
||||||
GSOCK_LOST_FLAG | GSOCK_CONNECTION_FLAG,
|
GSOCK_LOST_FLAG | GSOCK_CONNECTION_FLAG,
|
||||||
wx_socket_callback, (char *)this);
|
wx_socket_callback, (char *)this);
|
||||||
}
|
}
|
||||||
@@ -1104,12 +1104,12 @@ bool wxSocketServer::AcceptWith(wxSocketBase& sock, bool wait)
|
|||||||
// again.
|
// again.
|
||||||
|
|
||||||
if (!wait)
|
if (!wait)
|
||||||
GSocket_SetNonBlocking(m_socket, 1);
|
m_socket->SetNonBlocking(1);
|
||||||
|
|
||||||
child_socket = GSocket_WaitConnection(m_socket);
|
child_socket = m_socket->WaitConnection();
|
||||||
|
|
||||||
if (!wait)
|
if (!wait)
|
||||||
GSocket_SetNonBlocking(m_socket, 0);
|
m_socket->SetNonBlocking(0);
|
||||||
|
|
||||||
if (!child_socket)
|
if (!child_socket)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -1118,8 +1118,8 @@ bool wxSocketServer::AcceptWith(wxSocketBase& sock, bool wait)
|
|||||||
sock.m_socket = child_socket;
|
sock.m_socket = child_socket;
|
||||||
sock.m_connected = TRUE;
|
sock.m_connected = TRUE;
|
||||||
|
|
||||||
GSocket_SetTimeout(sock.m_socket, sock.m_timeout * 1000);
|
sock.m_socket->SetTimeout(sock.m_timeout * 1000);
|
||||||
GSocket_SetCallback(sock.m_socket, GSOCK_INPUT_FLAG | GSOCK_OUTPUT_FLAG |
|
sock.m_socket->SetCallback(GSOCK_INPUT_FLAG | GSOCK_OUTPUT_FLAG |
|
||||||
GSOCK_LOST_FLAG | GSOCK_CONNECTION_FLAG,
|
GSOCK_LOST_FLAG | GSOCK_CONNECTION_FLAG,
|
||||||
wx_socket_callback, (char *)&sock);
|
wx_socket_callback, (char *)&sock);
|
||||||
|
|
||||||
@@ -1148,7 +1148,7 @@ bool wxSocketServer::WaitForAccept(long seconds, long milliseconds)
|
|||||||
|
|
||||||
bool wxSocketBase::GetOption(int level, int optname, void *optval, int *optlen)
|
bool wxSocketBase::GetOption(int level, int optname, void *optval, int *optlen)
|
||||||
{
|
{
|
||||||
if (GSocket_GetSockOpt(m_socket, level, optname, optval, optlen)
|
if (m_socket->GetSockOpt(level, optname, optval, optlen)
|
||||||
!= GSOCK_NOERROR)
|
!= GSOCK_NOERROR)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -1159,7 +1159,7 @@ bool wxSocketBase::GetOption(int level, int optname, void *optval, int *optlen)
|
|||||||
bool wxSocketBase::SetOption(int level, int optname, const void *optval,
|
bool wxSocketBase::SetOption(int level, int optname, const void *optval,
|
||||||
int optlen)
|
int optlen)
|
||||||
{
|
{
|
||||||
if (GSocket_SetSockOpt(m_socket, level, optname, optval, optlen)
|
if (m_socket->SetSockOpt(level, optname, optval, optlen)
|
||||||
!= GSOCK_NOERROR)
|
!= GSOCK_NOERROR)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -1196,7 +1196,7 @@ bool wxSocketClient::Connect(wxSockAddress& addr_man, bool wait)
|
|||||||
{
|
{
|
||||||
// Shutdown and destroy the socket
|
// Shutdown and destroy the socket
|
||||||
Close();
|
Close();
|
||||||
GSocket_destroy(m_socket);
|
delete m_socket;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_socket = GSocket_new();
|
m_socket = GSocket_new();
|
||||||
@@ -1206,8 +1206,8 @@ bool wxSocketClient::Connect(wxSockAddress& addr_man, bool wait)
|
|||||||
if (!m_socket)
|
if (!m_socket)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
GSocket_SetTimeout(m_socket, m_timeout * 1000);
|
m_socket->SetTimeout(m_timeout * 1000);
|
||||||
GSocket_SetCallback(m_socket, GSOCK_INPUT_FLAG | GSOCK_OUTPUT_FLAG |
|
m_socket->SetCallback(GSOCK_INPUT_FLAG | GSOCK_OUTPUT_FLAG |
|
||||||
GSOCK_LOST_FLAG | GSOCK_CONNECTION_FLAG,
|
GSOCK_LOST_FLAG | GSOCK_CONNECTION_FLAG,
|
||||||
wx_socket_callback, (char *)this);
|
wx_socket_callback, (char *)this);
|
||||||
|
|
||||||
@@ -1216,13 +1216,13 @@ bool wxSocketClient::Connect(wxSockAddress& addr_man, bool wait)
|
|||||||
// again.
|
// again.
|
||||||
|
|
||||||
if (!wait)
|
if (!wait)
|
||||||
GSocket_SetNonBlocking(m_socket, 1);
|
m_socket->SetNonBlocking(1);
|
||||||
|
|
||||||
GSocket_SetPeer(m_socket, addr_man.GetAddress());
|
m_socket->SetPeer(addr_man.GetAddress());
|
||||||
err = GSocket_Connect(m_socket, GSOCK_STREAMED);
|
err = m_socket->Connect(GSOCK_STREAMED);
|
||||||
|
|
||||||
if (!wait)
|
if (!wait)
|
||||||
GSocket_SetNonBlocking(m_socket, 0);
|
m_socket->SetNonBlocking(0);
|
||||||
|
|
||||||
if (err != GSOCK_NOERROR)
|
if (err != GSOCK_NOERROR)
|
||||||
{
|
{
|
||||||
@@ -1267,10 +1267,10 @@ wxDatagramSocket::wxDatagramSocket( wxSockAddress& addr,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Setup the socket as non connection oriented
|
// Setup the socket as non connection oriented
|
||||||
GSocket_SetLocal(m_socket, addr.GetAddress());
|
m_socket->SetLocal(addr.GetAddress());
|
||||||
if( GSocket_SetNonOriented(m_socket) != GSOCK_NOERROR )
|
if( m_socket->SetNonOriented() != GSOCK_NOERROR )
|
||||||
{
|
{
|
||||||
GSocket_destroy(m_socket);
|
delete m_socket;
|
||||||
m_socket = NULL;
|
m_socket = NULL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1278,8 +1278,8 @@ wxDatagramSocket::wxDatagramSocket( wxSockAddress& addr,
|
|||||||
// Initialize all stuff
|
// Initialize all stuff
|
||||||
m_connected = FALSE;
|
m_connected = FALSE;
|
||||||
m_establishing = FALSE;
|
m_establishing = FALSE;
|
||||||
GSocket_SetTimeout( m_socket, m_timeout );
|
m_socket->SetTimeout( m_timeout );
|
||||||
GSocket_SetCallback( m_socket, GSOCK_INPUT_FLAG | GSOCK_OUTPUT_FLAG |
|
m_socket->SetCallback( GSOCK_INPUT_FLAG | GSOCK_OUTPUT_FLAG |
|
||||||
GSOCK_LOST_FLAG | GSOCK_CONNECTION_FLAG,
|
GSOCK_LOST_FLAG | GSOCK_CONNECTION_FLAG,
|
||||||
wx_socket_callback, (char*)this );
|
wx_socket_callback, (char*)this );
|
||||||
|
|
||||||
@@ -1298,7 +1298,7 @@ wxDatagramSocket& wxDatagramSocket::SendTo( wxSockAddress& addr,
|
|||||||
const void* buf,
|
const void* buf,
|
||||||
wxUint32 nBytes )
|
wxUint32 nBytes )
|
||||||
{
|
{
|
||||||
GSocket_SetPeer(m_socket, addr.GetAddress());
|
m_socket->SetPeer(addr.GetAddress());
|
||||||
Write(buf, nBytes);
|
Write(buf, nBytes);
|
||||||
return (*this);
|
return (*this);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user