#include <Thread.h>
Inherited by ibrcommon::DetachedThread [protected], and ibrcommon::JoinableThread [protected].

Classes | |
| class | CancelProtector |
Public Member Functions | |
| virtual | ~Thread ()=0 |
| virtual void | setup (void) |
| virtual void | run (void)=0 |
| virtual void | finally (void) |
| void | detach (void) |
| bool | operator== (const ibrcommon::Thread &other) |
| void | interrupt () |
Static Public Member Functions | |
| static void | yield (void) |
| static void | sleep (size_t timeout) |
| static void | exit (void) |
| static void | concurrency (int level) |
Protected Types | |
| enum | THREAD_STATE { THREAD_INITIALIZED, THREAD_PREPARE, THREAD_RUNNING, THREAD_CANCELLED, THREAD_FINALIZED, THREAD_JOINED, THREAD_ERROR } |
Protected Member Functions | |
| Thread (size_t stack=DEFAULT_STACKSIZE, bool delete_on_exit=false) | |
| int | kill (int sig) |
| void | cancellation_point () |
| void | enable_interruption () |
| void | disable_interruption () |
| void | cancel () throw (ThreadException) |
| virtual bool | __cancellation () |
Static Protected Member Functions | |
| static bool | equal (pthread_t thread1, pthread_t thread2) |
| static void * | exec_thread (void *obj) |
| static void | finalize_thread (void *obj) |
Protected Attributes | |
| enum ibrcommon::Thread::THREAD_STATE | _state |
| ibrcommon::Conditional | _state_lock |
| pthread_t | tid |
| size_t | stack |
| int | priority |
| pthread_attr_t | attr |
An abstract class for defining classes that operate as a thread. A derived thread class has a run method that is invoked with the newly created thread context, and can use the derived object to store all member data that needs to be associated with that context. This means the derived object can safely hold thread-specific data that is managed with the life of the object, rather than having to use the clumsy thread-specific data management and access functions found in thread support libraries.
Definition at line 41 of file Thread.h.
enum ibrcommon::Thread::THREAD_STATE [protected] |
| ibrcommon::Thread::Thread | ( | size_t | stack = DEFAULT_STACKSIZE, |
|
| bool | delete_on_exit = false | |||
| ) | [protected] |
Create a thread object that will have a preset stack size. If 0 is used, then the stack size is os defined/default.
| stack | size to use or 0 for default. |
Definition at line 102 of file Thread.cpp.
References attr.
| ibrcommon::Thread::~Thread | ( | ) | [pure virtual] |
Destroy thread object, thread-specific data, and execution context.
Definition at line 145 of file Thread.cpp.
References attr.
| virtual bool ibrcommon::Thread::__cancellation | ( | ) | [inline, protected, virtual] |
Reimplemented in ibrcommon::NetLinkManager, ibrcommon::Timer, ibrcommon::SimpleTimer, dtn::daemon::IndependentComponent, dtn::core::DataStorage, dtn::net::HTTPConvergenceLayer, dtn::routing::EpidemicRoutingExtension, dtn::routing::FloodRoutingExtension, dtn::routing::NeighborRoutingExtension, and dtn::routing::StaticRoutingExtension.
Definition at line 181 of file Thread.h.
Referenced by cancel().
| void ibrcommon::Thread::cancel | ( | ) | throw (ThreadException) [protected] |
Cancel the running thread context.
Definition at line 183 of file Thread.cpp.
References __cancellation(), _state, _state_lock, kill(), ibrcommon::Conditional::signal(), THREAD_PREPARE, THREAD_RUNNING, and tid.
Referenced by ibrcommon::DetachedThread::stop(), and ibrcommon::JoinableThread::stop().

| void ibrcommon::Thread::cancellation_point | ( | ) | [protected] |
this method enables the thread to terminate at this position if a cancellation request is pending
Definition at line 119 of file Thread.cpp.
| void ibrcommon::Thread::concurrency | ( | int | level | ) | [static] |
Set concurrency level of process. This is essentially a portable wrapper for pthread_setconcurrency.
Definition at line 124 of file Thread.cpp.
| void ibrcommon::Thread::detach | ( | void | ) |
| void ibrcommon::Thread::disable_interruption | ( | ) | [protected] |
disable interruption.
Definition at line 178 of file Thread.cpp.
| void ibrcommon::Thread::enable_interruption | ( | ) | [protected] |
enable interruption for this thread. used with pselect it is possible to break the blocking state of pselect by calling interrupt()
Definition at line 171 of file Thread.cpp.
Referenced by dtn::net::TCPConvergenceLayer::componentRun(), and ibrcommon::NetLinkManager::run().
| bool ibrcommon::Thread::equal | ( | pthread_t | thread1, | |
| pthread_t | thread2 | |||
| ) | [static, protected] |
Determine if two thread identifiers refer to the same thread.
| thread1 | to test. | |
| thread2 | to test. |
Definition at line 203 of file Thread.cpp.
Referenced by ibrcommon::JoinableThread::join(), and operator==().
| void * ibrcommon::Thread::exec_thread | ( | void * | obj | ) | [static, protected] |
static execute thread method
Definition at line 53 of file Thread.cpp.
References _state, _state_lock, exit(), finalize_thread(), IBRCOMMON_LOGGER_DEBUG, setup(), ibrcommon::Conditional::signal(), and THREAD_CANCELLED.
Referenced by ibrcommon::DetachedThread::start(), and ibrcommon::JoinableThread::start().

| void ibrcommon::Thread::exit | ( | void | ) | [static] |
Exit the thread context.
Definition at line 155 of file Thread.cpp.
Referenced by exec_thread(), and ibrcommon::JoinableThread::join().
| void ibrcommon::Thread::finalize_thread | ( | void * | obj | ) | [static, protected] |
this method finalizes a thread. If the thread is self-deleting, the object will be invalid after exection.
Definition at line 25 of file Thread.cpp.
References _state, _state_lock, finally(), and ibrcommon::Conditional::signal().
Referenced by exec_thread().

| virtual void ibrcommon::Thread::finally | ( | void | ) | [inline, virtual] |
This method is called when the run() method finishes.
Reimplemented in dtn::daemon::ClientHandler, and dtn::net::TCPConnection.
Definition at line 107 of file Thread.h.
Referenced by finalize_thread().
| void ibrcommon::Thread::interrupt | ( | ) |
Interrupt the thread execution. Actually, this method sends a SIGINT to the thread.
Definition at line 166 of file Thread.cpp.
References kill().
Referenced by ibrcommon::NetLinkManager::__cancellation(), dtn::net::TCPConvergenceLayer::__cancellation(), dtn::net::IPNDAgent::__cancellation(), and dtn::net::TCPConvergenceLayer::componentDown().

| int ibrcommon::Thread::kill | ( | int | sig | ) | [protected] |
sends a signal to this thread
| sig |
Definition at line 160 of file Thread.cpp.
References tid.
Referenced by cancel(), and interrupt().
| bool ibrcommon::Thread::operator== | ( | const ibrcommon::Thread & | other | ) | [inline] |
| virtual void ibrcommon::Thread::run | ( | void | ) | [pure virtual] |
Abstract interface for thread context run method.
Implemented in ibrcommon::NetLinkManager, ibrcommon::Timer, ibrcommon::SimpleTimer, dtn::daemon::ClientHandler, dtn::daemon::IndependentComponent, dtn::core::DataStorage, dtn::net::TCPConnection, dtn::routing::EpidemicRoutingExtension, dtn::routing::FloodRoutingExtension, dtn::routing::NeighborRoutingExtension, and dtn::routing::StaticRoutingExtension.
| virtual void ibrcommon::Thread::setup | ( | void | ) | [inline, virtual] |
This method is called before the run.
Reimplemented in dtn::net::TCPConnection.
Definition at line 97 of file Thread.h.
Referenced by exec_thread().
| void ibrcommon::Thread::sleep | ( | size_t | timeout | ) | [static] |
Sleep current thread for a specified time period.
| timeout | to sleep for in milliseconds. |
Definition at line 131 of file Thread.cpp.
| void ibrcommon::Thread::yield | ( | void | ) | [static] |
Yield execution context of the current thread. This is a static and may be used anywhere.
Definition at line 108 of file Thread.cpp.
Referenced by dtn::net::UDPConvergenceLayer::componentRun(), dtn::net::TCPConvergenceLayer::componentRun(), dtn::net::LOWPANConvergenceLayer::componentRun(), dtn::net::IPNDAgent::componentRun(), dtn::net::HTTPConvergenceLayer::componentRun(), ibrcommon::SimpleTimer::run(), ibrcommon::Timer::run(), dtn::routing::StaticRoutingExtension::run(), dtn::routing::NeighborRoutingExtension::run(), dtn::routing::FloodRoutingExtension::run(), dtn::routing::EpidemicRoutingExtension::run(), dtn::net::TCPConnection::run(), and dtn::daemon::ClientHandler::run().
enum ibrcommon::Thread::THREAD_STATE ibrcommon::Thread::_state [protected] |
ibrcommon::Conditional ibrcommon::Thread::_state_lock [protected] |
Definition at line 55 of file Thread.h.
Referenced by cancel(), exec_thread(), finalize_thread(), ibrcommon::JoinableThread::join(), and ibrcommon::JoinableThread::~JoinableThread().
pthread_attr_t ibrcommon::Thread::attr [protected] |
int ibrcommon::Thread::priority [protected] |
size_t ibrcommon::Thread::stack [protected] |
pthread_t ibrcommon::Thread::tid [protected] |
Definition at line 58 of file Thread.h.
Referenced by cancel(), detach(), ibrcommon::JoinableThread::join(), kill(), and operator==().
1.7.1