- wxSocketImpl is actually just an abstract base class having only code
common to all platforms, the concrete implementation classes derive from
- it and are created by wxSocketManager::CreateSocket().
+ it and are created by wxSocketImpl::Create().
- Some socket operations have different implementations in console-mode and
GUI applications. wxSocketManager class exists to abstract this in such
virtual void OnExit() = 0;
- // create a concrete socket implementation associated with the given
- // wxSocket object
- //
- // the returned object must be deleted by the caller
- virtual wxSocketImpl *CreateSocket(wxSocketBase& wxsocket) = 0;
-
-
-
// these functions enable or disable monitoring of the given socket for the
// specified events inside the currently running event loop (but notice
// that both BSD and Winsock implementations actually use socket->m_server
BSD and Winsock sockets.
Objects of this class are not created directly but only via its static
- Create() method which in turn forwards to wxSocketManager::CreateSocket().
+ Create() method which is implemented in port-specific code.
*/
class wxSocketImpl
{
virtual bool OnInit() { return true; }
virtual void OnExit() { }
- // allocate/free the storage we need
- virtual wxSocketImpl *CreateSocket(wxSocketBase& wxsocket)
- {
- return new wxSocketImplUnix(wxsocket);
- }
-
protected:
// identifies either input or output direction
//
// wxSocketImpl
// ==========================================================================
-/* static */
-wxSocketImpl *wxSocketImpl::Create(wxSocketBase& wxsocket)
-{
- wxSocketManager * const manager = wxSocketManager::Get();
- return manager ? manager->CreateSocket(wxsocket) : NULL;
-}
-
wxSocketImpl::wxSocketImpl(wxSocketBase& wxsocket)
: m_wxsocket(&wxsocket)
{
#include "wx/private/socket.h"
+/* static */
+wxSocketImpl *wxSocketImpl::Create(wxSocketBase& wxsocket)
+{
+ return new wxSocketImplMSW(wxsocket);
+}
+
void wxSocketImplMSW::DoClose()
{
wxSocketManager::Get()->
# define SOCKET_DEBUG(args)
#endif /* __GSOCKET_DEBUG__ */
+/* static */
+wxSocketImpl *wxSocketImpl::Create(wxSocketBase& wxsocket)
+{
+ return new wxSocketImplUnix(wxsocket);
+}
+
/*
* Disallow further read/write operations on this socket, close
return wxSOCKET_NOERROR;
}
#endif /* !defined(__VISAGECPP__) */
+
#endif /* wxUSE_SOCKETS */