X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2a4f27f2094c466e5c78a57958fe9d186de43d76..29ea4a290850e9ae79c258774fa22153a951ff7f:/include/wx/sckint.h diff --git a/include/wx/sckint.h b/include/wx/sckint.h index e42b7bfb9e..103595f5f6 100644 --- a/include/wx/sckint.h +++ b/include/wx/sckint.h @@ -15,12 +15,14 @@ #pragma interface #endif +#include "wx/defs.h" + #if wxUSE_SOCKETS -#include -#include -#include -#include +#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); @@ -79,8 +83,13 @@ class SocketWaiter: public wxThread { wxSocketInternal *m_internal; int m_fd; }; +#endif -class SocketRequester: public wxThread { +class SocketRequester +#if wxUSE_THREADS + : public wxThread +#endif + { public: SocketRequester(wxSocketBase *socket, wxSocketInternal *internal); ~SocketRequester(); @@ -91,9 +100,11 @@ class SocketRequester: public wxThread { bool WaitFor(wxSocketBase::wxRequestNotify req, int millisec); +#if wxUSE_THREADS // Thread Entry point // --- virtual void *Entry(); +#endif public: wxSocketBase *m_socket; @@ -114,6 +125,7 @@ class wxSocketInternal { void ReleaseFD(); int GetFD() { return m_fd; } + void SetFD(int fd) { m_fd = fd; } void ResumeWaiter(); void StopWaiter(); @@ -123,16 +135,20 @@ class wxSocketInternal { void QueueRequest(SockRequest *request, bool async); void WaitForEnd(SockRequest *request); + // Used by SocketRequester 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