};
class wxSocketInternal;
+
+#if wxUSE_THREADS
class SocketWaiter: public wxThread {
public:
SocketWaiter(wxSocketBase *socket, wxSocketInternal *internal);
wxSocketInternal *m_internal;
int m_fd;
};
+#endif
+ // wxUSE_THREADS
class wxSocketInternal {
public:
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);
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;
SocketRequester *m_thread_requester;
+#endif
wxList m_requests;
int m_fd;
+ bool m_invalid_requester;
};
#endif