]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/private/socket.h
Fix wxPropertyGrid::GetPropertyRect when the last item is collapsed.
[wxWidgets.git] / include / wx / private / socket.h
index e736a83dbd5ff0116373f66fc94bade1a8731b2e..973b764f7d48631fd991cd8f25eff63ee421264a 100644 (file)
@@ -1,9 +1,8 @@
 /////////////////////////////////////////////////////////////////////////////
 // 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
@@ -51,7 +50,7 @@
    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
 
@@ -61,7 +60,7 @@
 
 // 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
@@ -139,15 +134,23 @@ public:
     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() { }
 
@@ -162,16 +165,12 @@ private:
     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
@@ -281,10 +280,15 @@ public:
     // 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;
@@ -355,10 +359,10 @@ private:
     // 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"