Inheritance diagram for IoCompletionPortThread:
Public Member Functions | |
IoCompletionPortThread (IoCompletionPortScheduler &schedulerInit) | |
virtual void | run () |
virtual void | start () |
Spawns the OS thread. | |
void | join () |
Waits for the OS thread to terminate. | |
bool | isStarted () const |
| |
bool | isStopped () const |
| |
boost::thread & | getBoostThread () |
Accesses the underlying boost::thread, e.g. | |
std::string | getName () |
void | setName (std::string const &s) |
Protected Member Functions | |
void | initAndRun () |
virtual void | beforeRun () |
virtual void | afterRun () |
Protected Attributes | |
boost::thread * | pBoostThread |
bool | bRunning |
std::string | name |
Private Attributes | |
IoCompletionPortScheduler & | scheduler |
Definition at line 36 of file IoCompletionPortScheduler.cpp.
IoCompletionPortThread::IoCompletionPortThread | ( | IoCompletionPortScheduler & | schedulerInit | ) | [inline] |
Definition at line 40 of file IoCompletionPortScheduler.cpp.
00041 : scheduler(schedulerInit) 00042 { 00043 }
void IoCompletionPortThread::run | ( | ) | [virtual] |
Implements Thread.
Definition at line 139 of file IoCompletionPortScheduler.cpp.
References RandomAccessRequestBinding::getBufferSize(), IoCompletionPortScheduler::hCompletionPort, RandomAccessRequestBinding::notifyTransferCompletion(), IoCompletionPortScheduler::quit, and scheduler.
00140 { 00141 DWORD cbTransfer; 00142 ULONG_PTR pUnused; 00143 OVERLAPPED *pOverlapped; 00144 for (;;) { 00145 BOOL rc = GetQueuedCompletionStatus( 00146 scheduler.hCompletionPort, 00147 &cbTransfer, 00148 &pUnused, 00149 &pOverlapped, 00150 INFINITE); 00151 if (scheduler.quit) { 00152 return; 00153 } 00154 RandomAccessRequestBinding *pBinding = 00155 static_cast<RandomAccessRequestBinding *>(pOverlapped); 00156 if (rc) { 00157 assert(cbTransfer == pBinding->getBufferSize()); 00158 } 00159 pBinding->notifyTransferCompletion(rc); 00160 } 00161 }
void Thread::initAndRun | ( | ) | [protected, inherited] |
Definition at line 66 of file Thread.cpp.
References Thread::afterRun(), Thread::beforeRun(), and Thread::run().
Referenced by Thread::start().
void Thread::beforeRun | ( | ) | [protected, virtual, inherited] |
Definition at line 73 of file Thread.cpp.
References Thread::bRunning.
Referenced by Thread::initAndRun().
00074 { 00075 bRunning = true; 00076 }
void Thread::afterRun | ( | ) | [protected, virtual, inherited] |
Definition at line 78 of file Thread.cpp.
References Thread::bRunning.
Referenced by Thread::initAndRun().
00079 { 00080 bRunning = false; 00081 }
void Thread::start | ( | ) | [virtual, inherited] |
Spawns the OS thread.
Definition at line 50 of file Thread.cpp.
References Thread::initAndRun(), and Thread::pBoostThread.
Referenced by AioLinuxScheduler::AioLinuxScheduler(), AioPollingScheduler::AioPollingScheduler(), StatsTimer::start(), ResourceTest::testConcurrency(), and LocalConditionTest::testNotifyAll().
00051 { 00052 pBoostThread = new boost::thread( 00053 boost::bind(&Thread::initAndRun,this)); 00054 }
void Thread::join | ( | ) | [inherited] |
Waits for the OS thread to terminate.
Definition at line 56 of file Thread.cpp.
References Thread::pBoostThread.
Referenced by CheckpointThread::closeImpl(), TimerThread::stop(), AioPollingScheduler::stop(), AioLinuxScheduler::stop(), ResourceTest::testConcurrency(), and LocalConditionTest::testNotifyAll().
00057 { 00058 assert(pBoostThread); 00059 boost::thread t; 00060 assert(*pBoostThread != t); 00061 pBoostThread->join(); 00062 delete pBoostThread; 00063 pBoostThread = NULL; 00064 }
bool Thread::isStarted | ( | ) | const [inline, inherited] |
Reimplemented in AioLinuxScheduler.
Definition at line 71 of file Thread.h.
Referenced by CheckpointThread::closeImpl(), CacheImpl< PageT, VictimPolicyT >::closeImpl(), AioLinuxScheduler::isStarted(), and TimerThread::stop().
00072 { 00073 return pBoostThread ? true : false; 00074 }
bool Thread::isStopped | ( | ) | const [inline, inherited] |
Definition at line 79 of file Thread.h.
00080 { 00081 return !isStarted(); 00082 }
boost::thread& Thread::getBoostThread | ( | ) | [inline, inherited] |
Accesses the underlying boost::thread, e.g.
for use in a boost::thread_group. This thread must already be started.
Definition at line 90 of file Thread.h.
00091 { 00092 assert(isStarted()); 00093 return *pBoostThread; 00094 }
std::string Thread::getName | ( | ) | [inline, inherited] |
void Thread::setName | ( | std::string const & | s | ) | [inline, inherited] |
boost::thread* Thread::pBoostThread [protected, inherited] |
Definition at line 44 of file Thread.h.
Referenced by Thread::join(), Thread::start(), Thread::Thread(), and Thread::~Thread().
bool Thread::bRunning [protected, inherited] |
Definition at line 45 of file Thread.h.
Referenced by Thread::afterRun(), Thread::beforeRun(), Thread::Thread(), and Thread::~Thread().
std::string Thread::name [protected, inherited] |