Unconditional assert means fail.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38276 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Włodzimierz Skiba
2006-03-22 17:55:05 +00:00
parent c31be54ae0
commit 7fb0a11d3a

View File

@@ -1,12 +1,12 @@
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// Name: socket.cpp // Name: src/common/socket.cpp
// Purpose: Socket handler classes // Purpose: Socket handler classes
// Authors: Guilhem Lavaux, Guillermo Rodriguez Garcia // Authors: Guilhem Lavaux, Guillermo Rodriguez Garcia
// Created: April 1997 // Created: April 1997
// Copyright: (C) 1999-1997, Guilhem Lavaux // Copyright: (C) 1999-1997, Guilhem Lavaux
// (C) 2000-1999, Guillermo Rodriguez Garcia // (C) 2000-1999, Guillermo Rodriguez Garcia
// RCS_ID: $Id$ // RCS_ID: $Id$
// License: see wxWindows licence // License: wxWindows licence
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// ========================================================================== // ==========================================================================
@@ -24,7 +24,6 @@
#include "wx/app.h" #include "wx/app.h"
#include "wx/apptrait.h" #include "wx/apptrait.h"
#include "wx/defs.h"
#include "wx/object.h" #include "wx/object.h"
#include "wx/string.h" #include "wx/string.h"
#include "wx/timer.h" #include "wx/timer.h"
@@ -779,10 +778,10 @@ bool wxSocketBase::_Wait(long seconds,
bool wxSocketBase::Wait(long seconds, long milliseconds) bool wxSocketBase::Wait(long seconds, long milliseconds)
{ {
return _Wait(seconds, milliseconds, GSOCK_INPUT_FLAG | return _Wait(seconds, milliseconds, GSOCK_INPUT_FLAG |
GSOCK_OUTPUT_FLAG | GSOCK_OUTPUT_FLAG |
GSOCK_CONNECTION_FLAG | GSOCK_CONNECTION_FLAG |
GSOCK_LOST_FLAG); GSOCK_LOST_FLAG);
} }
bool wxSocketBase::WaitForRead(long seconds, long milliseconds) bool wxSocketBase::WaitForRead(long seconds, long milliseconds)
@@ -803,12 +802,12 @@ bool wxSocketBase::WaitForRead(long seconds, long milliseconds)
bool wxSocketBase::WaitForWrite(long seconds, long milliseconds) bool wxSocketBase::WaitForWrite(long seconds, long milliseconds)
{ {
return _Wait(seconds, milliseconds, GSOCK_OUTPUT_FLAG); return _Wait(seconds, milliseconds, GSOCK_OUTPUT_FLAG);
} }
bool wxSocketBase::WaitForLost(long seconds, long milliseconds) bool wxSocketBase::WaitForLost(long seconds, long milliseconds)
{ {
return _Wait(seconds, milliseconds, GSOCK_LOST_FLAG); return _Wait(seconds, milliseconds, GSOCK_LOST_FLAG);
} }
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
@@ -841,16 +840,16 @@ bool wxSocketBase::GetPeer(wxSockAddress& addr_man) const
bool wxSocketBase::GetLocal(wxSockAddress& addr_man) const bool wxSocketBase::GetLocal(wxSockAddress& addr_man) const
{ {
GAddress *local; GAddress *local;
if (!m_socket) if (!m_socket)
return false; return false;
local = m_socket->GetLocal(); local = m_socket->GetLocal();
addr_man.SetAddress(local); addr_man.SetAddress(local);
GAddress_destroy(local); GAddress_destroy(local);
return true; return true;
} }
// //
@@ -859,36 +858,36 @@ bool wxSocketBase::GetLocal(wxSockAddress& addr_man) const
void wxSocketBase::SaveState() void wxSocketBase::SaveState()
{ {
wxSocketState *state; wxSocketState *state;
state = new wxSocketState(); state = new wxSocketState();
state->m_flags = m_flags; state->m_flags = m_flags;
state->m_notify = m_notify; state->m_notify = m_notify;
state->m_eventmask = m_eventmask; state->m_eventmask = m_eventmask;
state->m_clientData = m_clientData; state->m_clientData = m_clientData;
m_states.Append(state); m_states.Append(state);
} }
void wxSocketBase::RestoreState() void wxSocketBase::RestoreState()
{ {
wxList::compatibility_iterator node; wxList::compatibility_iterator node;
wxSocketState *state; wxSocketState *state;
node = m_states.GetLast(); node = m_states.GetLast();
if (!node) if (!node)
return; return;
state = (wxSocketState *)node->GetData(); state = (wxSocketState *)node->GetData();
m_flags = state->m_flags; m_flags = state->m_flags;
m_notify = state->m_notify; m_notify = state->m_notify;
m_eventmask = state->m_eventmask; m_eventmask = state->m_eventmask;
m_clientData = state->m_clientData; m_clientData = state->m_clientData;
m_states.Erase(node); m_states.Erase(node);
delete state; delete state;
} }
// //
@@ -897,15 +896,15 @@ void wxSocketBase::RestoreState()
void wxSocketBase::SetTimeout(long seconds) void wxSocketBase::SetTimeout(long seconds)
{ {
m_timeout = seconds; m_timeout = seconds;
if (m_socket) if (m_socket)
m_socket->SetTimeout(m_timeout * 1000); m_socket->SetTimeout(m_timeout * 1000);
} }
void wxSocketBase::SetFlags(wxSocketFlags flags) void wxSocketBase::SetFlags(wxSocketFlags flags)
{ {
m_flags = flags; m_flags = flags;
} }
@@ -936,9 +935,9 @@ void LINKAGEMODE wx_socket_callback(GSocket * WXUNUSED(socket),
GSocketEvent notification, GSocketEvent notification,
char *cdata) char *cdata)
{ {
wxSocketBase *sckobj = (wxSocketBase *)cdata; wxSocketBase *sckobj = (wxSocketBase *)cdata;
sckobj->OnRequest((wxSocketNotify) notification); sckobj->OnRequest((wxSocketNotify) notification);
} }
void wxSocketBase::OnRequest(wxSocketNotify notification) void wxSocketBase::OnRequest(wxSocketNotify notification)
@@ -1009,18 +1008,18 @@ void wxSocketBase::OnRequest(wxSocketNotify notification)
void wxSocketBase::Notify(bool notify) void wxSocketBase::Notify(bool notify)
{ {
m_notify = notify; m_notify = notify;
} }
void wxSocketBase::SetNotify(wxSocketEventFlags flags) void wxSocketBase::SetNotify(wxSocketEventFlags flags)
{ {
m_eventmask = flags; m_eventmask = flags;
} }
void wxSocketBase::SetEventHandler(wxEvtHandler& handler, int id) void wxSocketBase::SetEventHandler(wxEvtHandler& handler, int id)
{ {
m_handler = &handler; m_handler = &handler;
m_id = id; m_id = id;
} }
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
@@ -1175,7 +1174,7 @@ wxSocketBase *wxSocketServer::Accept(bool wait)
bool wxSocketServer::WaitForAccept(long seconds, long milliseconds) bool wxSocketServer::WaitForAccept(long seconds, long milliseconds)
{ {
return _Wait(seconds, milliseconds, GSOCK_CONNECTION_FLAG); return _Wait(seconds, milliseconds, GSOCK_CONNECTION_FLAG);
} }
bool wxSocketBase::GetOption(int level, int optname, void *optval, int *optlen) bool wxSocketBase::GetOption(int level, int optname, void *optval, int *optlen)
@@ -1310,24 +1309,24 @@ bool wxSocketClient::DoConnect(wxSockAddress& addr_man, wxSockAddress* local, bo
bool wxSocketClient::Connect(wxSockAddress& addr_man, bool wait) bool wxSocketClient::Connect(wxSockAddress& addr_man, bool wait)
{ {
return (DoConnect(addr_man, NULL, wait)); return (DoConnect(addr_man, NULL, wait));
} }
bool wxSocketClient::Connect(wxSockAddress& addr_man, wxSockAddress& local, bool wait) bool wxSocketClient::Connect(wxSockAddress& addr_man, wxSockAddress& local, bool wait)
{ {
return (DoConnect(addr_man, &local, wait)); return (DoConnect(addr_man, &local, wait));
} }
bool wxSocketClient::WaitOnConnect(long seconds, long milliseconds) bool wxSocketClient::WaitOnConnect(long seconds, long milliseconds)
{ {
if (m_connected) // Already connected if (m_connected) // Already connected
return true; return true;
if (!m_establishing || !m_socket) // No connection in progress if (!m_establishing || !m_socket) // No connection in progress
return false; return false;
return _Wait(seconds, milliseconds, GSOCK_CONNECTION_FLAG | return _Wait(seconds, milliseconds, GSOCK_CONNECTION_FLAG |
GSOCK_LOST_FLAG); GSOCK_LOST_FLAG);
} }
// ========================================================================== // ==========================================================================
@@ -1340,31 +1339,30 @@ wxDatagramSocket::wxDatagramSocket( const wxSockAddress& addr,
wxSocketFlags flags ) wxSocketFlags flags )
: wxSocketBase( flags, wxSOCKET_DATAGRAM ) : wxSocketBase( flags, wxSOCKET_DATAGRAM )
{ {
// Create the socket // Create the socket
m_socket = GSocket_new(); m_socket = GSocket_new();
if(!m_socket) if(!m_socket)
{ {
wxASSERT_MSG( 0, _T("datagram socket not new'd") ); wxFAIL_MSG( _T("datagram socket not new'd") );
return; return;
} }
// Setup the socket as non connection oriented // Setup the socket as non connection oriented
m_socket->SetLocal(addr.GetAddress()); m_socket->SetLocal(addr.GetAddress());
if( m_socket->SetNonOriented() != GSOCK_NOERROR ) if( m_socket->SetNonOriented() != GSOCK_NOERROR )
{ {
delete m_socket; delete m_socket;
m_socket = NULL; m_socket = NULL;
return; return;
} }
// Initialize all stuff
m_connected = false;
m_establishing = false;
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 );
// Initialize all stuff
m_connected = false;
m_establishing = false;
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 );
} }
wxDatagramSocket& wxDatagramSocket::RecvFrom( wxSockAddress& addr, wxDatagramSocket& wxDatagramSocket::RecvFrom( wxSockAddress& addr,
@@ -1414,5 +1412,3 @@ IMPLEMENT_DYNAMIC_CLASS(wxSocketModule, wxModule)
#endif #endif
// wxUSE_SOCKETS // wxUSE_SOCKETS
// vi:sts=4:sw=4:et