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] |
1.4.4