/* -*- C++ -*- */ // $Id$ // ============================================================================ // // = LIBRARY // ace // // = FILENAME // Activation_Queue.h // // = AUTHOR // Andres Kruse and Douglas C. Schmidt // // // ============================================================================ #ifndef ACE_ACTIVATION_QUEUE_H #define ACE_ACTIVATION_QUEUE_H #include "ace/Synch_T.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ #include "ace/Message_Queue.h" #include "ace/Method_Request.h" // Be compatible with the terminology in the POSA2 book! #define ACE_Activation_List ACE_Activation_Queue class ACE_Export ACE_Activation_Queue { // = TITLE // Reifies a method into a request. Subclasses typically // represent necessary state and behavior. // // = DESCRIPTION // A is inserted in the , // where it is subsequently removed by the , which // invokes its method.. public: // = Initialization and termination methods. ACE_Activation_Queue (ACE_Message_Queue *new_queue = 0); // Constructor. virtual ~ACE_Activation_Queue (void); // Destructor. // = Activate Queue operations. // For the following two methods if == 0, the caller will // block until action is possible, else will wait until the absolute // time specified in * elapses. These calls will return, // however, when queue is closed, deactivated, when a signal occurs, // or if the time specified in timeout elapses, (in which case errno // = EWOULDBLOCK). ACE_Method_Request *dequeue (ACE_Time_Value *tv = 0); // Dequeue the next available . int enqueue (ACE_Method_Request *new_method_request, ACE_Time_Value *tv = 0); // Enqueue the in priority order. The priority is // determined by the method of the . int 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_ALLOC_HOOK_DECLARE; // Declare the dynamic allocation hooks. protected: ACE_Message_Queue *queue_; // Stores the . int delete_queue_; // Keeps track of whether we need to delete the queue. }; #if defined (__ACE_INLINE__) #include "ace/Activation_Queue.i" #endif /* __ACE_INLINE__ */ #endif /* ACE_ACTIVATION_QUEUE_H */