git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2379
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
// --------- SocketWaiter ---------------------------------------
// --------------------------------------------------------------
// --------- SocketWaiter ---------------------------------------
// --------------------------------------------------------------
SocketWaiter::SocketWaiter(wxSocketBase *socket,
wxSocketInternal *internal)
: m_socket(socket), m_internal(internal), m_fd(internal->GetFD())
SocketWaiter::SocketWaiter(wxSocketBase *socket,
wxSocketInternal *internal)
: m_socket(socket), m_internal(internal), m_fd(internal->GetFD())
// --------------------------------------------------------------
// --------- wxSocketInternal -----------------------------------
// --------------------------------------------------------------
// --------- wxSocketInternal -----------------------------------
wxSocketInternal::wxSocketInternal(wxSocketBase *socket)
{
m_socket = socket;
wxSocketInternal::wxSocketInternal(wxSocketBase *socket)
{
m_socket = socket;
m_thread_requester = NULL;
m_thread_waiter = NULL;
m_invalid_requester = TRUE;
m_request_locker.Lock();
m_thread_requester = NULL;
m_thread_waiter = NULL;
m_invalid_requester = TRUE;
m_request_locker.Lock();
}
wxSocketInternal::~wxSocketInternal()
{
}
wxSocketInternal::~wxSocketInternal()
{
StopRequester();
wxASSERT(m_thread_requester == NULL);
StopWaiter();
wxASSERT(m_thread_waiter == NULL);
m_request_locker.Unlock();
StopRequester();
wxASSERT(m_thread_requester == NULL);
StopWaiter();
wxASSERT(m_thread_waiter == NULL);
m_request_locker.Unlock();
}
// ----------------------------------------------------------------------
}
// ----------------------------------------------------------------------
// ----------------------------------------------------------------------
SockRequest *wxSocketInternal::WaitForReq()
{
// ----------------------------------------------------------------------
SockRequest *wxSocketInternal::WaitForReq()
{
wxNode *node;
node = m_requests.First();
wxNode *node;
node = m_requests.First();
}
return (SockRequest *)node->Data();
}
return (SockRequest *)node->Data();
+#else
+ return NULL;
+#endif
}
// ----------------------------------------------------------------------
}
// ----------------------------------------------------------------------
void wxSocketInternal::AcquireFD()
{
void wxSocketInternal::AcquireFD()
{
}
void wxSocketInternal::ReleaseFD()
{
}
void wxSocketInternal::ReleaseFD()
{
}
void wxSocketInternal::ResumeRequester()
{
}
void wxSocketInternal::ResumeRequester()
{
wxThreadError err;
wxASSERT(m_thread_requester == NULL);
wxThreadError err;
wxASSERT(m_thread_requester == NULL);
m_invalid_requester = FALSE;
}
m_end_requester.Unlock();
m_invalid_requester = FALSE;
}
m_end_requester.Unlock();
}
void wxSocketInternal::StopRequester()
{
}
void wxSocketInternal::StopRequester()
{
if (m_invalid_requester) {
delete m_thread_requester;
m_thread_requester = NULL;
if (m_invalid_requester) {
delete m_thread_requester;
m_thread_requester = NULL;
delete m_thread_requester;
m_thread_requester = NULL;
delete m_thread_requester;
m_thread_requester = NULL;
}
void wxSocketInternal::ResumeWaiter()
{
}
void wxSocketInternal::ResumeWaiter()
{
wxThreadError err;
if (m_thread_waiter != NULL)
wxThreadError err;
if (m_thread_waiter != NULL)
err = m_thread_waiter->Run();
wxASSERT(err == wxTHREAD_NO_ERROR);
err = m_thread_waiter->Run();
wxASSERT(err == wxTHREAD_NO_ERROR);
}
void wxSocketInternal::StopWaiter()
{
}
void wxSocketInternal::StopWaiter()
{
if (m_thread_waiter == NULL)
return;
if (m_thread_waiter == NULL)
return;
delete m_thread_waiter;
m_thread_waiter = NULL;
delete m_thread_waiter;
m_thread_waiter = NULL;
}
// ----------------------------------------------------------------------
}
// ----------------------------------------------------------------------
// ----------------------------------------------------------------------
void wxSocketInternal::QueueRequest(SockRequest *request, bool async)
{
// ----------------------------------------------------------------------
void wxSocketInternal::QueueRequest(SockRequest *request, bool async)
{
if (async) {
if (m_thread_requester == NULL)
ResumeRequester();
if (async) {
if (m_thread_requester == NULL)
ResumeRequester();
request->done = TRUE;
m_request_locker.Unlock();
}
request->done = TRUE;
m_request_locker.Unlock();
}
}
void wxSocketInternal::WaitForEnd(SockRequest *request)
{
}
void wxSocketInternal::WaitForEnd(SockRequest *request)
{