/* -*- C++ -*- */ // $Id$ // ============================================================================ // // = LIBRARY // ace // // = FILENAME // POSIX_Proactor.h // // = AUTHOR // Irfan Pyarali , // Tim Harrison and // Alexander Babu Arulanthu // // ============================================================================ #if !defined (ACE_POSIX_PROACTOR_H) #define ACE_POSIX_PROACTOR_H #include "ace/Proactor_Impl.h" #if defined (ACE_HAS_AIO_CALLS) // POSIX implementation of Proactor depends on the family of // system calls. #include "ace/Free_List.h" #include "ace/Pipe.h" #include "ace/POSIX_Asynch_IO.h" class ACE_Export ACE_POSIX_Proactor : public ACE_Proactor_Impl { // = TITLE // // POSIX implementation of the Proactor. // // = DESCRIPTION // // There are two different strategies by which Proactor can get // to know the completion of operations. One is based on // Asynchronous I/O Control Blocks (AIOCB) where a list of // AIOCBs are stored and completion status of the corresponding // operations are queried on them. The other one is based on // POSIX Real Time signals. This class abstracts out the common // code needed for both the strategies. ACE_AIOCB_Proactor and // ACE_SIG_Proactor specialize this class for each strategy. public: virtual ~ACE_POSIX_Proactor (void); // Virtual destructor. virtual int close (void); // Close down the Proactor. virtual int register_handle (ACE_HANDLE handle, const void *completion_key); // This function is a no-op function for Unix systems. Returns 0. // = Timer management. virtual long schedule_timer (ACE_Handler &handler, const void *act, const ACE_Time_Value &time); // Schedule a that will expire after