/////////////////////////////////////////////////////////////////////////////
// Name: wx/private/socket.h
-// Purpose: wxSocketImpl nd related declarations
+// Purpose: wxSocketImpl and related declarations
// Authors: Guilhem Lavaux, Vadim Zeitlin
// Created: April 1997
-// RCS-ID: $Id$
// Copyright: (c) 1997 Guilhem Lavaux
// (c) 2008 Vadim Zeitlin
// Licence: wxWindows licence
having been defined in sys/types.h" when winsock.h is included later and
doesn't seem to be necessary anyhow. It's not needed under Mac neither.
*/
-#if !defined(__WXMAC__) && !defined(__CYGWIN__) && !defined(__WXWINCE__)
+#if !defined(__WXMAC__) && !defined(__WXMSW__) && !defined(__WXWINCE__)
#include <sys/types.h>
#endif
// include the header defining timeval: under Windows this struct is used only
// with sockets so we need to include winsock.h which we do via windows.h
-#ifdef __WXMSW__
+#ifdef __WINDOWS__
#include "wx/msw/wrapwin.h"
#else
#include <sys/time.h> // for timeval
// define some symbols which winsock.h defines but traditional BSD headers
// don't
-#ifndef __WXMSW__
- #define SOCKET int
-#endif
-
#ifndef INVALID_SOCKET
#define INVALID_SOCKET (-1)
#endif
virtual void OnExit() = 0;
+ // create the socket implementation object matching this manager
+ 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
// value to determine what exactly should be monitored so it needs to be
// 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,
- wxSocketNotify event = wxSOCKET_MAX_EVENT) = 0;
+ wxSocketNotify event = wxSOCKET_LOST) = 0;
virtual void Uninstall_Callback(wxSocketImpl *socket,
- wxSocketNotify event = wxSOCKET_MAX_EVENT) = 0;
+ wxSocketNotify event = wxSOCKET_LOST) = 0;
virtual ~wxSocketManager() { }
Base class for all socket implementations providing functionality common to
BSD and Winsock sockets.
- Objects of this class are not created directly but only via its static
- Create() method which is implemented in port-specific code.
+ Objects of this class are not created directly but only via the factory
+ function wxSocketManager::CreateSocket().
*/
class wxSocketImpl
{
public:
- // static factory function: creates the low-level socket associated with
- // the given wxSocket (and inherits its attributes such as timeout)
- static wxSocketImpl *Create(wxSocketBase& wxsocket);
-
virtual ~wxSocketImpl();
// set various socket properties: all of those can only be called before
// named) OnRequest() method
void NotifyOnStateChange(wxSocketNotify event);
+ // called after reading/writing the data from/to the socket and should
+ // enable back the wxSOCKET_INPUT/OUTPUT_FLAG notifications if they were
+ // turned off when this data was first detected
+ virtual void ReenableEvents(wxSocketEventFlags flags) = 0;
+
// TODO: make these fields protected and provide accessors for those of
// them that wxSocketBase really needs
//protected:
- SOCKET m_fd;
+ wxSOCKET_T m_fd;
int m_initialRecvBufferSize;
int m_initialSendBufferSize;
// socket is shut down
wxSocketBase *m_wxsocket;
- DECLARE_NO_COPY_CLASS(wxSocketImpl)
+ wxDECLARE_NO_COPY_CLASS(wxSocketImpl);
};
-#if defined(__WXMSW__)
+#if defined(__WINDOWS__)
#include "wx/msw/private/sockmsw.h"
#else
#include "wx/unix/private/sockunix.h"