]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/sckint.h
Work on streams of all sorts. More to come.
[wxWidgets.git] / include / wx / sckint.h
index e90dfb939c8f09dca44cf391f7d95b16dd23ff06..1b1ae550836949d48f7393dfdba4152a8f10e866 100644 (file)
 #pragma interface
 #endif
 
+#include "wx/defs.h"
+
 #if wxUSE_SOCKETS
 
-#include <wx/object.h>
-#include <wx/list.h>
-#include <wx/socket.h>
-#include <wx/thread.h>
+#include "wx/object.h"
+#include "wx/list.h"
+#include "wx/socket.h"
+#include "wx/thread.h"
 
 // Socket state
 class SocketState
@@ -61,6 +63,8 @@ class SockRequest
 };
 
 class wxSocketInternal;
+
+#if wxUSE_THREADS
 class SocketWaiter: public wxThread {
  public:
   SocketWaiter(wxSocketBase *socket, wxSocketInternal *internal);
@@ -80,7 +84,11 @@ class SocketWaiter: public wxThread {
   int m_fd;
 };
 
-class SocketRequester: public wxThread {
+class SocketRequester
+#if wxUSE_THREADS
+  : public wxThread 
+#endif
+         {
  public:
   SocketRequester(wxSocketBase *socket, wxSocketInternal *internal);
   ~SocketRequester();
@@ -100,6 +108,8 @@ class SocketRequester: public wxThread {
   wxSocketInternal *m_internal;
   int m_fd;
 };
+#endif
+  // wxUSE_THREADS
 
 class wxSocketInternal {
  public:
@@ -114,13 +124,12 @@ class wxSocketInternal {
   void ReleaseFD();
 
   int GetFD() { return m_fd; }
+  void SetFD(int fd) { m_fd = fd; }
   
-  void InitializeSocket();
-  void FinalizeSocket();
-  void PauseSocket();
-  void ResumeSocket();
-  void EnableWaiter();
-  void DisableWaiter();
+  void ResumeWaiter();
+  void StopWaiter();
+  void ResumeRequester();
+  void StopRequester();
 
   void QueueRequest(SockRequest *request, bool async);
   void WaitForEnd(SockRequest *request);
@@ -128,13 +137,16 @@ class wxSocketInternal {
   SockRequest *WaitForReq();
   void EndRequest(SockRequest *req);
  public:
-  wxMutex m_socket_locker, m_fd_locker, m_request_locker;
-  wxCondition m_socket_cond;
   wxSocketBase *m_socket;
+#if wxUSE_THREADS
+  wxMutex m_socket_locker, m_fd_locker, m_request_locker, m_end_requester;
+  wxCondition m_socket_cond;
   SocketWaiter *m_thread_waiter;
+#endif
   SocketRequester *m_thread_requester;
   wxList m_requests;
   int m_fd;
+  bool m_invalid_requester;
 };
 
 #endif