A request handler. More...
#include <requestHandler.h>


Public Member Functions | |
| RequestHandler (const bool threadSafe=false) | |
| Construct a new request handler. | |
| ~RequestHandler () | |
| Destruct the request handler. | |
| uint32_t | registerRequest (void *data=0) |
| Register a new request. | |
| void | unregisterRequest (const uint32_t requestID) |
| Unregister a request. | |
| bool | waitRequest (const uint32_t requestID, void *&result, const uint32_t timeout=EQ_TIMEOUT_INDEFINITE) |
| Wait a given time for the completion of a request. | |
| bool | waitRequest (const uint32_t requestID, uint32_t &result, const uint32_t timeout=EQ_TIMEOUT_INDEFINITE) |
| Wait for a request with a uint32_t result. | |
| bool | waitRequest (const uint32_t requestID, bool &result, const uint32_t timeout=EQ_TIMEOUT_INDEFINITE) |
| Wait for a request with a bool result. | |
| bool | waitRequest (const uint32_t requestID) |
| Wait for a request without a result. | |
| bool | isServed (const uint32_t requestID) const |
| Poll for the completion of a request. | |
| void * | getRequestData (const uint32_t requestID) |
| Retrieve the user-specific data for a request. | |
| void | serveRequest (const uint32_t requestID, void *result=0) |
| Serve a request with a void* result. | |
| void | serveRequest (const uint32_t requestID, uint32_t result) |
| Serve a request with a uint32_t result. | |
| void | serveRequest (const uint32_t requestID, bool result) |
| Serve a request with a bool result. | |
| bool | isThreadSafe () const |
| bool | isEmpty () const |
A request handler.
Different execution threads can synchronize using a request handler. One thread registers a request, and later waits for the request to be served. Another thread can serve the request, providing a result value.
A note on thread-safety: Unless threadSafe is set in the constructor, the functions registerRequest(), unregisterRequest() and waitRequest() are supposed to be called from one 'waiting' thread, and the functions serveRequest() and deleteRequest() are supposed to be called only from one 'serving' thread.
Definition at line 47 of file requestHandler.h.
| eq::base::RequestHandler::RequestHandler | ( | const bool | threadSafe = false |
) |
Construct a new request handler.
| threadSafe | if true, all public functions are thread-safe and can be called from multiple threads. |
Definition at line 32 of file requestHandler.cpp.
| eq::base::RequestHandler::~RequestHandler | ( | ) |
Destruct the request handler.
Definition at line 37 of file requestHandler.cpp.
| uint32_t eq::base::RequestHandler::registerRequest | ( | void * | data = 0 |
) |
Register a new request.
| data | a pointer to user-specific data for the request, can be 0. |
Definition at line 50 of file requestHandler.cpp.
References eq::base::IDPool::MAX_CAPACITY.
Referenced by eq::net::Node::_connect(), eq::net::Session::attachObject(), eq::Server::chooseConfig(), eq::net::Node::close(), eq::net::UnbufferedMasterCM::commitNB(), eq::net::FullMasterCM::commitNB(), eq::net::Session::detachObject(), eq::Config::exit(), eq::net::Session::genIDs(), eq::net::Session::getIDMaster(), eq::Config::init(), eq::net::Session::mapObjectNB(), eq::net::Node::mapSession(), eq::net::Node::registerSession(), eq::Server::releaseConfig(), eq::Server::shutdown(), eq::server::Config::unmap(), eq::net::Session::unmapObject(), eq::net::Node::unmapSession(), and eq::Server::useConfig().

| void eq::base::RequestHandler::unregisterRequest | ( | const uint32_t | requestID | ) |
Unregister a request.
Note that waitRequest automatically unregisters the request when it was successful. This method is only used when a waitRequest has timed out and the request will no longer be used.
| requestID | the request identifier. |
Definition at line 72 of file requestHandler.cpp.
References eq::base::Lock::unset().
Referenced by eq::net::Node::syncConnect().


| bool eq::base::RequestHandler::waitRequest | ( | const uint32_t | requestID, | |
| void *& | result, | |||
| const uint32_t | timeout = EQ_TIMEOUT_INDEFINITE | |||
| ) |
Wait a given time for the completion of a request.
The request is unregistered upon successful completion, i.e, the when the method returns true.
| requestID | the request identifier. | |
| result | the result code of the operation. | |
| timeout | the timeout in milliseconds to wait for the request, or EQ_TIMEOUT_INDEFINITE to wait indefinitely. |
Definition at line 90 of file requestHandler.cpp.
Referenced by eq::net::Node::_connect(), eq::net::Session::attachObject(), eq::Server::chooseConfig(), eq::net::Node::close(), eq::net::UnbufferedMasterCM::commitSync(), eq::net::FullMasterCM::commitSync(), eq::net::Session::detachObject(), eq::Config::exit(), eq::net::Session::genIDs(), eq::net::Session::getIDMaster(), eq::Config::init(), eq::net::Session::mapObjectSync(), eq::net::Node::mapSession(), eq::net::Node::registerSession(), eq::Server::releaseConfig(), eq::Server::shutdown(), eq::net::Node::syncConnect(), eq::server::Config::unmap(), eq::net::Session::unmapObject(), eq::net::Node::unmapSession(), and eq::Server::useConfig().

| bool eq::base::RequestHandler::waitRequest | ( | const uint32_t | requestID, | |
| uint32_t & | result, | |||
| const uint32_t | timeout = EQ_TIMEOUT_INDEFINITE | |||
| ) |
Wait for a request with a uint32_t result.
Definition at line 100 of file requestHandler.cpp.
| bool eq::base::RequestHandler::waitRequest | ( | const uint32_t | requestID, | |
| bool & | result, | |||
| const uint32_t | timeout = EQ_TIMEOUT_INDEFINITE | |||
| ) |
Wait for a request with a bool result.
Definition at line 110 of file requestHandler.cpp.
| bool eq::base::RequestHandler::waitRequest | ( | const uint32_t | requestID | ) |
Wait for a request without a result.
Definition at line 120 of file requestHandler.cpp.
References EQ_TIMEOUT_INDEFINITE.
| bool eq::base::RequestHandler::isServed | ( | const uint32_t | requestID | ) | const |
Poll for the completion of a request.
Does not unregister the request.
| requestID | the request identifier. |
Definition at line 205 of file requestHandler.cpp.
Referenced by eq::Server::chooseConfig(), eq::Config::exit(), eq::Config::init(), eq::Server::releaseConfig(), eq::Server::shutdown(), and eq::Server::useConfig().

| void * eq::base::RequestHandler::getRequestData | ( | const uint32_t | requestID | ) |
Retrieve the user-specific data for a request.
| requestID | the request identifier. |
Definition at line 155 of file requestHandler.cpp.
Referenced by eq::net::Session::mapObjectSync().

| void eq::base::RequestHandler::serveRequest | ( | const uint32_t | requestID, | |
| void * | result = 0 | |||
| ) |
Serve a request with a void* result.
| requestID | the request identifier. | |
| result | the result of the request. |
Definition at line 165 of file requestHandler.cpp.
References eq::base::Lock::set(), and eq::base::Lock::unset().

| void eq::base::RequestHandler::serveRequest | ( | const uint32_t | requestID, | |
| uint32_t | result | |||
| ) |
Serve a request with a uint32_t result.
Definition at line 178 of file requestHandler.cpp.
References eq::base::Lock::set(), and eq::base::Lock::unset().

| void eq::base::RequestHandler::serveRequest | ( | const uint32_t | requestID, | |
| bool | result | |||
| ) |
Serve a request with a bool result.
Definition at line 191 of file requestHandler.cpp.
References eq::base::Lock::set(), and eq::base::Lock::unset().

| bool eq::base::RequestHandler::isThreadSafe | ( | ) | const [inline] |
Definition at line 148 of file requestHandler.h.
| bool eq::base::RequestHandler::isEmpty | ( | ) | const [inline] |
Definition at line 154 of file requestHandler.h.
Referenced by eq::net::Node::close(), and eq::net::Node::~Node().

0.9.1 by
1.6.1