remove wxSOCKET_MAX_EVENT, it is not really necessary and results in gcc warnings about unhandled enum value in switch in existing code (including our own sample)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57653 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2008-12-30 00:11:04 +00:00
parent 778f682e4d
commit c363ead1e2
5 changed files with 26 additions and 16 deletions

View File

@ -144,10 +144,15 @@ public:
// that both BSD and Winsock implementations actually use socket->m_server // that both BSD and Winsock implementations actually use socket->m_server
// value to determine what exactly should be monitored so it needs to be // value to determine what exactly should be monitored so it needs to be
// set before calling these functions) // set before calling these functions)
//
// the default event value is used just for the convenience of wxMSW
// implementation which doesn't use this parameter anyhow, it doesn't make
// sense to pass wxSOCKET_LOST for the Unix implementation which does use
// this parameter
virtual void Install_Callback(wxSocketImpl *socket, virtual void Install_Callback(wxSocketImpl *socket,
wxSocketNotify event = wxSOCKET_MAX_EVENT) = 0; wxSocketNotify event = wxSOCKET_LOST) = 0;
virtual void Uninstall_Callback(wxSocketImpl *socket, virtual void Uninstall_Callback(wxSocketImpl *socket,
wxSocketNotify event = wxSOCKET_MAX_EVENT) = 0; wxSocketNotify event = wxSOCKET_LOST) = 0;
virtual ~wxSocketManager() { } virtual ~wxSocketManager() { }

View File

@ -39,8 +39,7 @@ enum wxSocketNotify
wxSOCKET_INPUT, wxSOCKET_INPUT,
wxSOCKET_OUTPUT, wxSOCKET_OUTPUT,
wxSOCKET_CONNECTION, wxSOCKET_CONNECTION,
wxSOCKET_LOST, wxSOCKET_LOST
wxSOCKET_MAX_EVENT
}; };
enum enum

View File

@ -109,11 +109,12 @@ protected:
switch ( event ) switch ( event )
{ {
default: default:
wxFAIL_MSG( "unexpected socket event" ); wxFAIL_MSG( "unknown socket event" );
// fall through return FD_INPUT; // we must return something
case wxSOCKET_LOST: case wxSOCKET_LOST:
// fall through wxFAIL_MSG( "unexpected socket event" );
return FD_INPUT; // as above
case wxSOCKET_INPUT: case wxSOCKET_INPUT:
return FD_INPUT; return FD_INPUT;
@ -122,7 +123,12 @@ protected:
return FD_OUTPUT; return FD_OUTPUT;
case wxSOCKET_CONNECTION: case wxSOCKET_CONNECTION:
// FIXME: explain this? // for server sockets we're interested in events indicating
// that a new connection is pending, i.e. that accept() will
// succeed and this is indicated by socket becoming ready for
// reading, while for the other ones we're interested in the
// completion of non-blocking connect() which is indicated by
// the socket becoming ready for writing
return socket->IsServer() ? FD_INPUT : FD_OUTPUT; return socket->IsServer() ? FD_INPUT : FD_OUTPUT;
} }
} }

View File

@ -179,8 +179,10 @@ public:
{ {
return new wxSocketImplMSW(wxsocket); return new wxSocketImplMSW(wxsocket);
} }
virtual void Install_Callback(wxSocketImpl *socket, wxSocketNotify event); virtual void Install_Callback(wxSocketImpl *socket,
virtual void Uninstall_Callback(wxSocketImpl *socket, wxSocketNotify event); wxSocketNotify event = wxSOCKET_LOST);
virtual void Uninstall_Callback(wxSocketImpl *socket,
wxSocketNotify event = wxSOCKET_LOST);
private: private:
static wxDynamicLibrary gs_wsock32dll; static wxDynamicLibrary gs_wsock32dll;
@ -402,7 +404,7 @@ void wxSocketMSWManager::Install_Callback(wxSocketImpl *socket_,
* Disable event notifications (used when shutting down the socket) * Disable event notifications (used when shutting down the socket)
*/ */
void wxSocketMSWManager::Uninstall_Callback(wxSocketImpl *socket_, void wxSocketMSWManager::Uninstall_Callback(wxSocketImpl *socket_,
wxSocketNotify WXUNUSED(event)) wxSocketNotify WXUNUSED(event))
{ {
wxSocketImplMSW * const socket = static_cast<wxSocketImplMSW *>(socket_); wxSocketImplMSW * const socket = static_cast<wxSocketImplMSW *>(socket_);
@ -442,8 +444,7 @@ wxSocketImpl *wxSocketImpl::Create(wxSocketBase& wxsocket)
void wxSocketImplMSW::DoClose() void wxSocketImplMSW::DoClose()
{ {
wxSocketManager::Get()-> wxSocketManager::Get()->Uninstall_Callback(this);
Uninstall_Callback(this, wxSOCKET_MAX_EVENT /* unused anyhow */);
closesocket(m_fd); closesocket(m_fd);
} }

View File

@ -222,15 +222,14 @@ int wxSocketManagerMac::GetCFCallback(wxSocketImpl *socket, wxSocketNotify event
return socket->IsServer() ? kCFSocketReadCallBack return socket->IsServer() ? kCFSocketReadCallBack
: kCFSocketConnectCallBack; : kCFSocketConnectCallBack;
case wxSOCKET_LOST:
case wxSOCKET_INPUT: case wxSOCKET_INPUT:
return kCFSocketReadCallBack; return kCFSocketReadCallBack;
case wxSOCKET_OUTPUT: case wxSOCKET_OUTPUT:
return kCFSocketWriteCallBack; return kCFSocketWriteCallBack;
case wxSOCKET_MAX_EVENT: case wxSOCKET_LOST:
wxFAIL_MSG( "invalid wxSocketNotify" ); wxFAIL_MSG( "unexpected wxSocketNotify" );
return 0; return 0;
default: default: