![]() |
SocketThread Class ReferenceDetached socket run thread.
More...
|
Public Member Functions | |
SocketThread (Socket *p) | |
~SocketThread () | |
void | Run () |
Private Member Functions | |
SocketThread (const SocketThread &s) | |
SocketThread & | operator= (const SocketThread &) |
Private Attributes | |
SocketHandler | m_h |
Socket * | m_socket |
Definition at line 48 of file SocketThread.h.
SocketThread::SocketThread | ( | Socket * | p | ) |
SocketThread::~SocketThread | ( | ) |
Definition at line 48 of file SocketThread.cpp.
References Thread::IsRunning(), m_h, SocketHandler::Release(), Thread::SetRelease(), Thread::SetRunning(), and Utility::Sleep().
00049 { 00050 if (IsRunning()) 00051 { 00052 SetRelease(true); 00053 SetRunning(false); 00054 m_h.Release(); 00055 Utility::Sleep(5); 00056 } 00057 }
SocketThread::SocketThread | ( | const SocketThread & | s | ) | [inline, private] |
void SocketThread::Run | ( | ) | [virtual] |
Implements Thread.
Definition at line 60 of file SocketThread.cpp.
References SocketHandler::Add(), SocketHandler::EnableRelease(), SocketHandler::GetCount(), Thread::IsRunning(), m_h, m_socket, SocketHandler::Select(), Thread::SetDeleteOnExit(), and SocketHandler::SetSlave().
00061 { 00062 m_h.SetSlave(); 00063 m_h.Add(m_socket); 00064 m_socket -> SetSlaveHandler(&m_h); 00065 m_socket -> OnDetached(); 00066 m_h.EnableRelease(); 00067 while (m_h.GetCount() > 1 && IsRunning()) 00068 { 00069 m_h.Select(0, 500000); 00070 } 00071 // m_socket now deleted oops 00072 // (a socket can only be detached if DeleteByHandler() is true) 00073 // yeah oops m_socket delete its socket thread, that means this 00074 // so Socket will no longer delete its socket thread, instead we do this: 00075 SetDeleteOnExit(); 00076 }
SocketThread& SocketThread::operator= | ( | const SocketThread & | ) | [inline, private] |
SocketHandler SocketThread::m_h [private] |
Socket* SocketThread::m_socket [private] |