# ACE_Activation_Queue Class Reference

Reifies a method into a request. Subclasses typically represent necessary state and behavior. More...

`#include <Activation_Queue.h>`

Collaboration diagram for ACE_Activation_Queue:

[legend]
List of all members.

## Public Member Functions

| ACE_Activation_Queue (ACE_Message_Queue< ACE_SYNCH > *new_queue=0, ACE_Allocator *alloc=0, ACE_Allocator *db_alloc=0)
| Constructor.
virtual | ~ACE_Activation_Queue (void)
| Destructor.
ACE_Method_Request * | dequeue (ACE_Time_Value *tv=0)
| Dequeue the next available ACE_Method_Request.
int | enqueue (ACE_Method_Request *new_method_request, ACE_Time_Value *tv=0)
| Enqueue the ACE_Method_Request in priority order.
size_t | method_count (void) const
| Get the current number of method objects in the queue.
int | is_empty (void) const
| Returns 1 if the queue is empty, 0 otherwise.
int | is_full (void) const
| Returns 1 if the queue is full, 0 otherwise.
void | dump (void) const
| Dump the state of an request.
ACE_Message_Queue< ACE_SYNCH > * | queue (void) const
| Get a pointer to the underlying queue.
void | queue (ACE_Message_Queue< ACE_SYNCH > *q)
| Set the pointer to the underlying queue.

## Public Attributes

| ACE_ALLOC_HOOK_DECLARE
| Declare the dynamic allocation hooks.

## Protected Attributes

ACE_Message_Queue< ACE_SYNCH > * | queue_
| Stores the Method_Requests.
int | delete_queue_
| Keeps track of whether we need to delete the queue.

## Private Member Functions

| ACE_Activation_Queue (const ACE_Activation_Queue &)
void | operator= (const ACE_Activation_Queue &)

## Private Attributes

ACE_Allocator * | allocator_
| Allocation strategy of the queue.
ACE_Allocator * | data_block_allocator_
| Allocation strategy of the message blocks.

## Detailed Description

Reifies a method into a request. Subclasses typically represent necessary state and behavior.

Maintains a priority-ordered queue of ACE_Method_Request objects. A scheduler class (often derived from ACE_Task) subsequently removes each method request and invokes its `call()` method.

This class is discussed in depth in the Active Object chapter of POSA2. In that book, it is referred to as an Activation List.

See also:
  ACE_Method_Request

## Constructor & Destructor Documentation

ACE_Activation_Queue::ACE_Activation_Queue | ( | ACE_Message_Queue< ACE_SYNCH > * | new_queue = `0`,
|  | ACE_Allocator * | alloc = `0`,
|  | ACE_Allocator * | db_alloc = `0`
| ) |

Constructor.

Initializes a new activation queue.

Parameters:

  new_queue

  The activation queue uses an ACE_Message_Queue to queue and order the method requests. If this argument is 0, a new ACE_Message_Queue is created for this object's use and will be deleted when this object is destroyed. If a non-zero pointer is supplied, the passed object will be used and will not be deleted when this object is destroyed. If an ACE_Task is being created to act as the scheduler, for instance, its ACE_Message_Queue pointer can be passed to this object.

  | alloc | Optional, the allocator to use when allocating ACE_Message_Block instances that wrap the method requests queued to this activation queue. Defaults to ACE_Allocator::instance().
  | db_alloc | Optional, the allocator to use when allocating data blocks for the ACE_Message_Block instances that wrap the method requests queued to this activation queue. Defaults to ACE_Allocator::instance().

ACE_Activation_Queue::~ACE_Activation_Queue | ( | void |  | ) | `[virtual]`

| Destructor.

ACE_Activation_Queue::ACE_Activation_Queue | ( | const ACE_Activation_Queue & |  | ) | `[private]`

## Member Function Documentation

ACE_Method_Request * ACE_Activation_Queue::dequeue | ( | ACE_Time_Value * | tv = `0` | ) |

Dequeue the next available ACE_Method_Request.

Parameters:

  | tv | If 0, the method will block until a method request is available, else will wait until the absolute time specified in the referenced ACE_Time_Value. This method will return, earlier, however, if queue is closed, deactivated, or when a signal occurs.

Return values:

  | Pointer | to the dequeued ACE_Method_Request object.
  | 0 | an error occurs; errno contains further information. If the specified timeout elapses, errno will be `EWOULDBLOCK`.

ACE_BEGIN_VERSIONED_NAMESPACE_DECL void ACE_Activation_Queue::dump | ( | void |  | ) | const

| Dump the state of an request.

int ACE_Activation_Queue::enqueue | ( | ACE_Method_Request * | new_method_request,
|  | ACE_Time_Value * | tv = `0`
| ) |

Enqueue the ACE_Method_Request in priority order.

The priority of the method request is obtained via the `priority()` method of the queued method request. Priority ordering is determined by the ACE_Message_Queue class; 0 is the lowest priority.

Parameters:

  | new_method_request | Pointer to the ACE_Method_Request object to queue. This object's `priority()` method is called to obtain the priority.
  | tv | If 0, the method will block until the method request can be queued, else will wait until the absolute time specified in the referenced ACE_Time_Value. This method will return, earlier, however, if queue is closed, deactivated, or when a signal occurs.

Return values:

  | >0 | The number of method requests on the queue after adding the specified request.
  | -1 | if an error occurs; errno contains further information. If the specified timeout elapses, errno will be `EWOULDBLOCK`.

ACE_INLINE int ACE_Activation_Queue::is_empty | ( | void |  | ) | const

| Returns 1 if the queue is empty, 0 otherwise.

ACE_INLINE int ACE_Activation_Queue::is_full | ( | void |  | ) | const

| Returns 1 if the queue is full, 0 otherwise.

ACE_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE size_t ACE_Activation_Queue::method_count | ( | void |  | ) | const

| Get the current number of method objects in the queue.

void ACE_Activation_Queue::operator= | ( | const ACE_Activation_Queue & |  | ) | `[private]`

ACE_INLINE void ACE_Activation_Queue::queue | ( | ACE_Message_Queue< ACE_SYNCH > * | q | ) |

| Set the pointer to the underlying queue.

ACE_INLINE ACE_Message_Queue< ACE_SYNCH > * ACE_Activation_Queue::queue | ( | void |  | ) | const

| Get a pointer to the underlying queue.

## Member Data Documentation

ACE_Activation_Queue::ACE_ALLOC_HOOK_DECLARE

| Declare the dynamic allocation hooks.

ACE_Allocator* ACE_Activation_Queue::allocator_`[private]`

| Allocation strategy of the queue.

ACE_Allocator* ACE_Activation_Queue::data_block_allocator_`[private]`

| Allocation strategy of the message blocks.

int ACE_Activation_Queue::delete_queue_`[protected]`

| Keeps track of whether we need to delete the queue.

ACE_Message_Queue<ACE_SYNCH>* ACE_Activation_Queue::queue_`[protected]`

| Stores the Method_Requests.

The documentation for this class was generated from the following files:

- Activation_Queue.h
- Activation_Queue.cpp
- Activation_Queue.inl