summaryrefslogtreecommitdiff
path: root/ace/Proactor.h
diff options
context:
space:
mode:
authoralex <alex@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-04-25 03:59:50 +0000
committeralex <alex@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-04-25 03:59:50 +0000
commita85e43d6ce0ed824713d611dddef982d837cee76 (patch)
treea1ca7ec32d41c7914d56c968a2be0233cd285f86 /ace/Proactor.h
parente4e33898d9bc410f268e4c0da0dc7ca47bb2ed9f (diff)
downloadATCD-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.h42
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);