Class activation_queue_base
poet::activation_queue_base — Base class for activation queues.
Synopsis
class activation_queue_base { public: // types typedef unsigned long size_type; // construct/copy/destruct virtual ~activation_queue_base(); // public member functions virtual void push_back(const boost::shared_ptr<method_request_base> &) ; virtual boost::shared_ptr<method_request_base> get_request() ; void wake(); virtual size_type size() const; virtual bool empty() const; };
Description
An activation queue is responsible for thread-safely transporting method requests from the threads making asynchronous function calls to a scheduler thread for execution. libpoet provides two activation queues derived from activation_queue_base: out_of_order_activation_queue and in_order_activation_queue.
activation_queue_base
public member functions
-
virtual void push_back(const boost::shared_ptr<method_request_base> & request) ;
Called to adds a new method request to the activation queue.
-
virtual boost::shared_ptr<method_request_base> get_request() ;
get_request
blocks until the next method request is ready to run, then pops the request off the queue and returns it. Theget_request
call may be forced to return early by a call towake
.get_request
is called by schedulers to obtain method requests for execution.Returns:
A method request which is ready to be run. If
get_request
was interrupted by a wake call before any method requests became ready, it should return an emptyshared_ptr
. -
void wake();
A call to
wake
should cause anyget_request
calls which are waiting for a ready method request to wake up immediately and return an emptyshared_ptr
. -
virtual size_type size() const;
Returns:
the number of method requests waiting in the queue.
-
virtual bool empty() const;
Returns:
true if size() is zero.