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
|
||||
if (m_socket)
|
||||
GSocket_destroy(m_socket);
|
||||
delete m_socket;
|
||||
|
||||
// Free the pushback buffer
|
||||
if (m_unread)
|
||||
@@ -283,11 +283,11 @@ bool wxSocketBase::Close()
|
||||
if (m_socket)
|
||||
{
|
||||
// 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);
|
||||
|
||||
// Shutdown the connection
|
||||
GSocket_Shutdown(m_socket);
|
||||
m_socket->Shutdown();
|
||||
}
|
||||
|
||||
m_connected = FALSE;
|
||||
@@ -341,9 +341,9 @@ wxUint32 wxSocketBase::_Read(void* buffer, wxUint32 nbytes)
|
||||
int ret;
|
||||
if (m_flags & wxSOCKET_NOWAIT)
|
||||
{
|
||||
GSocket_SetNonBlocking(m_socket, 1);
|
||||
ret = GSocket_Read(m_socket, (char *)buffer, nbytes);
|
||||
GSocket_SetNonBlocking(m_socket, 0);
|
||||
m_socket->SetNonBlocking(1);
|
||||
ret = m_socket->Read((char *)buffer, nbytes);
|
||||
m_socket->SetNonBlocking(0);
|
||||
|
||||
if (ret > 0)
|
||||
total += ret;
|
||||
@@ -357,7 +357,7 @@ wxUint32 wxSocketBase::_Read(void* buffer, wxUint32 nbytes)
|
||||
if ( !(m_flags & wxSOCKET_BLOCK) && !WaitForRead() )
|
||||
break;
|
||||
|
||||
ret = GSocket_Read(m_socket, (char *)buffer, nbytes);
|
||||
ret = m_socket->Read((char *)buffer, nbytes);
|
||||
|
||||
if (ret > 0)
|
||||
{
|
||||
@@ -532,9 +532,9 @@ wxUint32 wxSocketBase::_Write(const void *buffer, wxUint32 nbytes)
|
||||
int ret;
|
||||
if (m_flags & wxSOCKET_NOWAIT)
|
||||
{
|
||||
GSocket_SetNonBlocking(m_socket, 1);
|
||||
ret = GSocket_Write(m_socket, (const char *)buffer, nbytes);
|
||||
GSocket_SetNonBlocking(m_socket, 0);
|
||||
m_socket->SetNonBlocking(1);
|
||||
ret = m_socket->Write((const char *)buffer, nbytes);
|
||||
m_socket->SetNonBlocking(0);
|
||||
|
||||
if (ret > 0)
|
||||
total = ret;
|
||||
@@ -548,7 +548,7 @@ wxUint32 wxSocketBase::_Write(const void *buffer, wxUint32 nbytes)
|
||||
if ( !(m_flags & wxSOCKET_BLOCK) && !WaitForWrite() )
|
||||
break;
|
||||
|
||||
ret = GSocket_Write(m_socket, (const char *)buffer, nbytes);
|
||||
ret = m_socket->Write((const char *)buffer, nbytes);
|
||||
|
||||
if (ret > 0)
|
||||
{
|
||||
@@ -693,7 +693,7 @@ bool wxSocketBase::_Wait(long seconds,
|
||||
timeout = m_timeout * 1000;
|
||||
|
||||
#if !defined(wxUSE_GUI) || !wxUSE_GUI
|
||||
GSocket_SetTimeout(m_socket, timeout);
|
||||
m_socket->SetTimeout(timeout);
|
||||
#endif
|
||||
|
||||
// Wait in an active polling loop.
|
||||
@@ -711,7 +711,7 @@ bool wxSocketBase::_Wait(long seconds,
|
||||
|
||||
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)
|
||||
if (result & GSOCK_CONNECTION_FLAG)
|
||||
@@ -794,7 +794,7 @@ bool wxSocketBase::GetPeer(wxSockAddress& addr_man) const
|
||||
if (!m_socket)
|
||||
return FALSE;
|
||||
|
||||
peer = GSocket_GetPeer(m_socket);
|
||||
peer = m_socket->GetPeer();
|
||||
|
||||
// copying a null address would just trigger an assert anyway
|
||||
|
||||
@@ -814,7 +814,7 @@ bool wxSocketBase::GetLocal(wxSockAddress& addr_man) const
|
||||
if (!m_socket)
|
||||
return FALSE;
|
||||
|
||||
local = GSocket_GetLocal(m_socket);
|
||||
local = m_socket->GetLocal();
|
||||
addr_man.SetAddress(local);
|
||||
GAddress_destroy(local);
|
||||
|
||||
@@ -868,7 +868,7 @@ void wxSocketBase::SetTimeout(long seconds)
|
||||
m_timeout = seconds;
|
||||
|
||||
if (m_socket)
|
||||
GSocket_SetTimeout(m_socket, m_timeout * 1000);
|
||||
m_socket->SetTimeout(m_timeout * 1000);
|
||||
}
|
||||
|
||||
void wxSocketBase::SetFlags(wxSocketFlags flags)
|
||||
@@ -928,12 +928,12 @@ void wxSocketBase::OnRequest(wxSocketNotify notification)
|
||||
// which are no longer valid.
|
||||
|
||||
case wxSOCKET_INPUT:
|
||||
if (m_reading || !GSocket_Select(m_socket, GSOCK_INPUT_FLAG))
|
||||
if (m_reading || !m_socket->Select(GSOCK_INPUT_FLAG))
|
||||
return;
|
||||
break;
|
||||
|
||||
case wxSOCKET_OUTPUT:
|
||||
if (m_writing || !GSocket_Select(m_socket, GSOCK_OUTPUT_FLAG))
|
||||
if (m_writing || !m_socket->Select(GSOCK_OUTPUT_FLAG))
|
||||
return;
|
||||
break;
|
||||
|
||||
@@ -1067,23 +1067,23 @@ wxSocketServer::wxSocketServer(wxSockAddress& addr_man,
|
||||
|
||||
// Setup the socket as server
|
||||
|
||||
GSocket_SetLocal(m_socket, addr_man.GetAddress());
|
||||
m_socket->SetLocal(addr_man.GetAddress());
|
||||
|
||||
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;
|
||||
|
||||
wxLogTrace( wxTRACE_Socket, _T("*** GSocket_SetServer failed") );
|
||||
return;
|
||||
}
|
||||
|
||||
GSocket_SetTimeout(m_socket, m_timeout * 1000);
|
||||
GSocket_SetCallback(m_socket, GSOCK_INPUT_FLAG | GSOCK_OUTPUT_FLAG |
|
||||
m_socket->SetTimeout(m_timeout * 1000);
|
||||
m_socket->SetCallback(GSOCK_INPUT_FLAG | GSOCK_OUTPUT_FLAG |
|
||||
GSOCK_LOST_FLAG | GSOCK_CONNECTION_FLAG,
|
||||
wx_socket_callback, (char *)this);
|
||||
}
|
||||
@@ -1104,12 +1104,12 @@ bool wxSocketServer::AcceptWith(wxSocketBase& sock, bool wait)
|
||||
// again.
|
||||
|
||||
if (!wait)
|
||||
GSocket_SetNonBlocking(m_socket, 1);
|
||||
m_socket->SetNonBlocking(1);
|
||||
|
||||
child_socket = GSocket_WaitConnection(m_socket);
|
||||
child_socket = m_socket->WaitConnection();
|
||||
|
||||
if (!wait)
|
||||
GSocket_SetNonBlocking(m_socket, 0);
|
||||
m_socket->SetNonBlocking(0);
|
||||
|
||||
if (!child_socket)
|
||||
return FALSE;
|
||||
@@ -1118,8 +1118,8 @@ bool wxSocketServer::AcceptWith(wxSocketBase& sock, bool wait)
|
||||
sock.m_socket = child_socket;
|
||||
sock.m_connected = TRUE;
|
||||
|
||||
GSocket_SetTimeout(sock.m_socket, sock.m_timeout * 1000);
|
||||
GSocket_SetCallback(sock.m_socket, GSOCK_INPUT_FLAG | GSOCK_OUTPUT_FLAG |
|
||||
sock.m_socket->SetTimeout(sock.m_timeout * 1000);
|
||||
sock.m_socket->SetCallback(GSOCK_INPUT_FLAG | GSOCK_OUTPUT_FLAG |
|
||||
GSOCK_LOST_FLAG | GSOCK_CONNECTION_FLAG,
|
||||
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)
|
||||
{
|
||||
if (GSocket_GetSockOpt(m_socket, level, optname, optval, optlen)
|
||||
if (m_socket->GetSockOpt(level, optname, optval, optlen)
|
||||
!= GSOCK_NOERROR)
|
||||
{
|
||||
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,
|
||||
int optlen)
|
||||
{
|
||||
if (GSocket_SetSockOpt(m_socket, level, optname, optval, optlen)
|
||||
if (m_socket->SetSockOpt(level, optname, optval, optlen)
|
||||
!= GSOCK_NOERROR)
|
||||
{
|
||||
return FALSE;
|
||||
@@ -1196,7 +1196,7 @@ bool wxSocketClient::Connect(wxSockAddress& addr_man, bool wait)
|
||||
{
|
||||
// Shutdown and destroy the socket
|
||||
Close();
|
||||
GSocket_destroy(m_socket);
|
||||
delete m_socket;
|
||||
}
|
||||
|
||||
m_socket = GSocket_new();
|
||||
@@ -1206,8 +1206,8 @@ bool wxSocketClient::Connect(wxSockAddress& addr_man, bool wait)
|
||||
if (!m_socket)
|
||||
return FALSE;
|
||||
|
||||
GSocket_SetTimeout(m_socket, m_timeout * 1000);
|
||||
GSocket_SetCallback(m_socket, GSOCK_INPUT_FLAG | GSOCK_OUTPUT_FLAG |
|
||||
m_socket->SetTimeout(m_timeout * 1000);
|
||||
m_socket->SetCallback(GSOCK_INPUT_FLAG | GSOCK_OUTPUT_FLAG |
|
||||
GSOCK_LOST_FLAG | GSOCK_CONNECTION_FLAG,
|
||||
wx_socket_callback, (char *)this);
|
||||
|
||||
@@ -1216,13 +1216,13 @@ bool wxSocketClient::Connect(wxSockAddress& addr_man, bool wait)
|
||||
// again.
|
||||
|
||||
if (!wait)
|
||||
GSocket_SetNonBlocking(m_socket, 1);
|
||||
m_socket->SetNonBlocking(1);
|
||||
|
||||
GSocket_SetPeer(m_socket, addr_man.GetAddress());
|
||||
err = GSocket_Connect(m_socket, GSOCK_STREAMED);
|
||||
m_socket->SetPeer(addr_man.GetAddress());
|
||||
err = m_socket->Connect(GSOCK_STREAMED);
|
||||
|
||||
if (!wait)
|
||||
GSocket_SetNonBlocking(m_socket, 0);
|
||||
m_socket->SetNonBlocking(0);
|
||||
|
||||
if (err != GSOCK_NOERROR)
|
||||
{
|
||||
@@ -1267,10 +1267,10 @@ wxDatagramSocket::wxDatagramSocket( wxSockAddress& addr,
|
||||
return;
|
||||
}
|
||||
// Setup the socket as non connection oriented
|
||||
GSocket_SetLocal(m_socket, addr.GetAddress());
|
||||
if( GSocket_SetNonOriented(m_socket) != GSOCK_NOERROR )
|
||||
m_socket->SetLocal(addr.GetAddress());
|
||||
if( m_socket->SetNonOriented() != GSOCK_NOERROR )
|
||||
{
|
||||
GSocket_destroy(m_socket);
|
||||
delete m_socket;
|
||||
m_socket = NULL;
|
||||
return;
|
||||
}
|
||||
@@ -1278,8 +1278,8 @@ wxDatagramSocket::wxDatagramSocket( wxSockAddress& addr,
|
||||
// Initialize all stuff
|
||||
m_connected = FALSE;
|
||||
m_establishing = FALSE;
|
||||
GSocket_SetTimeout( m_socket, m_timeout );
|
||||
GSocket_SetCallback( m_socket, GSOCK_INPUT_FLAG | GSOCK_OUTPUT_FLAG |
|
||||
m_socket->SetTimeout( m_timeout );
|
||||
m_socket->SetCallback( GSOCK_INPUT_FLAG | GSOCK_OUTPUT_FLAG |
|
||||
GSOCK_LOST_FLAG | GSOCK_CONNECTION_FLAG,
|
||||
wx_socket_callback, (char*)this );
|
||||
|
||||
@@ -1298,7 +1298,7 @@ wxDatagramSocket& wxDatagramSocket::SendTo( wxSockAddress& addr,
|
||||
const void* buf,
|
||||
wxUint32 nBytes )
|
||||
{
|
||||
GSocket_SetPeer(m_socket, addr.GetAddress());
|
||||
m_socket->SetPeer(addr.GetAddress());
|
||||
Write(buf, nBytes);
|
||||
return (*this);
|
||||
}
|
||||
|
Reference in New Issue
Block a user