diff options
author | alex <alex@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-04-25 03:59:50 +0000 |
---|---|---|
committer | alex <alex@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-04-25 03:59:50 +0000 |
commit | a85e43d6ce0ed824713d611dddef982d837cee76 (patch) | |
tree | a1ca7ec32d41c7914d56c968a2be0233cd285f86 /ace/Proactor.h | |
parent | e4e33898d9bc410f268e4c0da0dc7ca47bb2ed9f (diff) | |
download | ATCD-a85e43d6ce0ed824713d611dddef982d837cee76.tar.gz |
- Completed Multithreading of POSIX_SIG_Proactor.
- Introduced another constructor for ACE_POSIX_SIG_Proactor for taking
signal mask to be used with the Proactor.
- Thanks to Dave Butenhof <butenhof@zko.dec.com> for helping a lot to
understand the various things in the POSIX4 standard.
- Thanks to Dave suggestion of keeping null_handler for the sigaction
to real-time signals. With this and a couple of other correct POSIX
things SIG proactor is now working with in Solaris 2.7.
- Lynx OS doesnt support <pthread_sigmask>, so it couldnt be
multithreaded. Enabled AIOCB_Proactor for this platform.
- Added an example to make use of the real-time signal numbers for the
asynchronous I/O calls.
Diffstat (limited to 'ace/Proactor.h')
-rw-r--r-- | ace/Proactor.h | 42 |
1 files changed, 26 insertions, 16 deletions
diff --git a/ace/Proactor.h b/ace/Proactor.h index abc0d605a82..4f3904f43e4 100644 --- a/ace/Proactor.h +++ b/ace/Proactor.h @@ -304,8 +304,9 @@ public: ACE_Message_Block &message_block, u_long bytes_to_read, const void* act, - ACE_HANDLE event, - int priority); + ACE_HANDLE event = ACE_INVALID_HANDLE, + int priority = 0, + int signal_number = ACE_SIGRTMIN); // Create the correct implementation class for ACE_Asynch_Read_Stream::Result class. virtual ACE_Asynch_Write_Stream_Result_Impl *create_asynch_write_stream_result (ACE_Handler &handler, @@ -313,8 +314,9 @@ public: ACE_Message_Block &message_block, u_long bytes_to_write, const void* act, - ACE_HANDLE event, - int priority); + ACE_HANDLE event = ACE_INVALID_HANDLE, + int priority = 0, + int signal_number = ACE_SIGRTMIN); // Create the correct implementation class for ACE_Asynch_Write_Stream::Result. virtual ACE_Asynch_Read_File_Result_Impl *create_asynch_read_file_result (ACE_Handler &handler, @@ -324,8 +326,9 @@ public: const void* act, u_long offset, u_long offset_high, - ACE_HANDLE event, - int priority); + ACE_HANDLE event = ACE_INVALID_HANDLE, + int priority = 0, + int signal_number = ACE_SIGRTMIN); // Create the correct implementation class for ACE_Asynch_Read_File::Result. virtual ACE_Asynch_Write_File_Result_Impl *create_asynch_write_file_result (ACE_Handler &handler, @@ -335,8 +338,9 @@ public: const void* act, u_long offset, u_long offset_high, - ACE_HANDLE event, - int priority); + ACE_HANDLE event = ACE_INVALID_HANDLE, + int priority = 0, + int signal_number = ACE_SIGRTMIN); // Create the correct implementation class for ACE_Asynch_Write_File::Result. virtual ACE_Asynch_Accept_Result_Impl *create_asynch_accept_result (ACE_Handler &handler, @@ -345,8 +349,9 @@ public: ACE_Message_Block &message_block, u_long bytes_to_read, const void* act, - ACE_HANDLE event, - int priority); + ACE_HANDLE event = ACE_INVALID_HANDLE, + int priority = 0, + int signal_number = ACE_SIGRTMIN); // Create the correct implementation class for ACE_Asynch_Accept::Result. virtual ACE_Asynch_Transmit_File_Result_Impl *create_asynch_transmit_file_result (ACE_Handler &handler, @@ -359,17 +364,22 @@ public: u_long bytes_per_send, u_long flags, const void *act, - ACE_HANDLE event, - int priority); + ACE_HANDLE event = ACE_INVALID_HANDLE, + int priority = 0, + int signal_number = ACE_SIGRTMIN); // Create the correct implementation class for ACE_Asynch_Transmit_File::Result. - + virtual ACE_Asynch_Result_Impl *create_asynch_timer (ACE_Handler &handler, const void *act, const ACE_Time_Value &tv, - ACE_HANDLE event, - int priority = 0); + ACE_HANDLE event = ACE_INVALID_HANDLE, + int priority = 0, + int signal_number = ACE_SIGRTMIN); // Create a timer result object which can be used with the Timer - // mechanism of the Proactor. + // mechanism of the Proactor. + // If <signal_number> is -1, <POSIX_SIG_Proactor> will create a + // Timer object with a meaningful signal number, choosing the + // largest signal number from the signal mask of the Proactor. protected: virtual void implementation (ACE_Proactor_Impl *implementation); |