Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef ACE_POSIX_CB_PROACTOR_H
00014 #define ACE_POSIX_CB_PROACTOR_H
00015
00016 #include "ace/config-all.h"
00017
00018 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00019 # pragma once
00020 #endif
00021
00022 #if defined (ACE_HAS_AIO_CALLS)
00023
00024 #include "ace/Synch_Traits.h"
00025 #include "ace/Thread_Semaphore.h"
00026 #include "ace/Null_Semaphore.h"
00027
00028 #include "ace/POSIX_Proactor.h"
00029
00030
00031 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00032
00033
00034
00035
00036
00037
00038
00039 class ACE_Export ACE_POSIX_CB_Proactor : public ACE_POSIX_AIOCB_Proactor
00040 {
00041
00042 public:
00043 virtual Proactor_Type get_impl_type (void);
00044
00045
00046 virtual ~ACE_POSIX_CB_Proactor (void);
00047
00048
00049
00050 ACE_POSIX_CB_Proactor (size_t max_aio_operations = ACE_AIO_DEFAULT_SIZE);
00051
00052
00053
00054 static void aio_completion_func (sigval cb_data);
00055
00056 protected:
00057
00058
00059
00060
00061
00062
00063
00064 virtual int handle_events (ACE_Time_Value &wait_time);
00065
00066
00067
00068
00069
00070
00071
00072
00073 virtual int handle_events (void);
00074
00075
00076 virtual ssize_t allocate_aio_slot (ACE_POSIX_Asynch_Result *result);
00077
00078
00079
00080 virtual int notify_completion (int sig_num);
00081
00082
00083
00084
00085
00086
00087 int handle_events_i (u_long milli_seconds);
00088
00089
00090
00091 ACE_SYNCH_SEMAPHORE sema_;
00092 };
00093
00094 ACE_END_VERSIONED_NAMESPACE_DECL
00095
00096 #endif
00097 #endif