ACE  6.1.7
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes
ACE_POSIX_CB_Proactor Class Reference

Implementation of Callback-based Proactor };. More...

#include <POSIX_CB_Proactor.h>

Inheritance diagram for ACE_POSIX_CB_Proactor:
Inheritance graph
[legend]
Collaboration diagram for ACE_POSIX_CB_Proactor:
Collaboration graph
[legend]

List of all members.

Public Member Functions

virtual Proactor_Type get_impl_type (void)
virtual ~ACE_POSIX_CB_Proactor (void)
 Destructor.
 ACE_POSIX_CB_Proactor (size_t max_aio_operations=ACE_AIO_DEFAULT_SIZE)
- Public Member Functions inherited from ACE_POSIX_AIOCB_Proactor
 ACE_POSIX_AIOCB_Proactor (size_t nmaxop=ACE_AIO_DEFAULT_SIZE)
virtual ~ACE_POSIX_AIOCB_Proactor (void)
 Destructor.
virtual int close (void)
 Close down the Proactor.
virtual int post_completion (ACE_POSIX_Asynch_Result *result)
 Post a result to the completion port of the Proactor.
virtual int start_aio (ACE_POSIX_Asynch_Result *result, ACE_POSIX_Proactor::Opcode op)
virtual int cancel_aio (ACE_HANDLE h)
- Public Member Functions inherited from ACE_POSIX_Proactor
virtual ~ACE_POSIX_Proactor (void)
 Virtual destructor.
ACE_Asynch_Pseudo_Taskget_asynch_pseudo_task ()
 Task to process pseudo-asynchronous operations.
virtual int register_handle (ACE_HANDLE handle, const void *completion_key)
 This function is a no-op function for Unix systems. Returns 0.
int wake_up_dispatch_threads (void)
 @ This is a no-op on POSIX platforms. Returns 0.
int close_dispatch_threads (int wait)
 @ This is a no-op on POSIX platforms. Returns 0.
size_t number_of_threads (void) const
 @ This is a no-op on POSIX platforms. Returns 0.
void number_of_threads (size_t threads)
 Set number of thread used as a parameter to CreatIoCompletionPort.
virtual ACE_HANDLE get_handle (void) const
 This is a no-op in POSIX. Returns ACE_INVALID_HANDLE.
virtual
ACE_Asynch_Read_Stream_Impl
create_asynch_read_stream (void)
 Create the correct implementation class for doing Asynch_Read_Stream.
virtual
ACE_Asynch_Read_Stream_Result_Impl
create_asynch_read_stream_result (const ACE_Handler::Proxy_Ptr &handler_proxy, ACE_HANDLE handle, ACE_Message_Block &message_block, size_t bytes_to_read, const void *act, 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_Impl
create_asynch_write_stream (void)
 Create the correct implementation class for doing Asynch_Write_Stream.
virtual
ACE_Asynch_Write_Stream_Result_Impl
create_asynch_write_stream_result (const ACE_Handler::Proxy_Ptr &handler_proxy, ACE_HANDLE handle, ACE_Message_Block &message_block, size_t bytes_to_write, const void *act, 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_Implcreate_asynch_read_file (void)
 Create the correct implementation class for doing Asynch_Read_File.
virtual
ACE_Asynch_Read_File_Result_Impl
create_asynch_read_file_result (const ACE_Handler::Proxy_Ptr &handler_proxy, ACE_HANDLE handle, ACE_Message_Block &message_block, size_t bytes_to_read, const void *act, u_long offset, u_long offset_high, 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_Impl
create_asynch_write_file (void)
 Create the correct implementation class for doing Asynch_Write_File.
virtual
ACE_Asynch_Write_File_Result_Impl
create_asynch_write_file_result (const ACE_Handler::Proxy_Ptr &handler_proxy, ACE_HANDLE handle, ACE_Message_Block &message_block, size_t bytes_to_write, const void *act, u_long offset, u_long offset_high, 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_Read_Dgram_Impl
create_asynch_read_dgram (void)
virtual
ACE_Asynch_Read_Dgram_Result_Impl
create_asynch_read_dgram_result (const ACE_Handler::Proxy_Ptr &handler_proxy, ACE_HANDLE handle, ACE_Message_Block *message_block, size_t bytes_to_read, int flags, int protocol_family, const void *act, ACE_HANDLE event=ACE_INVALID_HANDLE, int priority=0, int signal_number=ACE_SIGRTMIN)
 Create the correct implementation class for ACE_Asynch_Read_Dgram::Result.
virtual
ACE_Asynch_Write_Dgram_Impl
create_asynch_write_dgram (void)
virtual
ACE_Asynch_Write_Dgram_Result_Impl
create_asynch_write_dgram_result (const ACE_Handler::Proxy_Ptr &handler_proxy, ACE_HANDLE handle, ACE_Message_Block *message_block, size_t bytes_to_write, int flags, const void *act, ACE_HANDLE event=ACE_INVALID_HANDLE, int priority=0, int signal_number=ACE_SIGRTMIN)
 Create the correct implementation class for ACE_Asynch_Write_Dgram::Result.
virtual ACE_Asynch_Accept_Implcreate_asynch_accept (void)
 Create the correct implementation class for doing Asynch_Accept.
virtual
ACE_Asynch_Accept_Result_Impl
create_asynch_accept_result (const ACE_Handler::Proxy_Ptr &handler_proxy, ACE_HANDLE listen_handle, ACE_HANDLE accept_handle, ACE_Message_Block &message_block, size_t bytes_to_read, const void *act, 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_Connect_Implcreate_asynch_connect (void)
 Create the correct implementation class for doing Asynch_Connect.
virtual
ACE_Asynch_Connect_Result_Impl
create_asynch_connect_result (const ACE_Handler::Proxy_Ptr &handler_proxy, ACE_HANDLE connect_handle, const void *act, ACE_HANDLE event=ACE_INVALID_HANDLE, int priority=0, int signal_number=ACE_SIGRTMIN)
 Create the correct implementation class for ACE_Asynch_Connect::Result.
virtual
ACE_Asynch_Transmit_File_Impl
create_asynch_transmit_file (void)
 Create the correct implementation class for doing Asynch_Transmit_File.
virtual
ACE_Asynch_Transmit_File_Result_Impl
create_asynch_transmit_file_result (const ACE_Handler::Proxy_Ptr &handler_proxy, ACE_HANDLE socket, ACE_HANDLE file, ACE_Asynch_Transmit_File::Header_And_Trailer *header_and_trailer, size_t bytes_to_write, u_long offset, u_long offset_high, size_t bytes_per_send, u_long flags, const void *act, 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_Implcreate_asynch_timer (const ACE_Handler::Proxy_Ptr &handler_proxy, const void *act, const ACE_Time_Value &tv, ACE_HANDLE event=ACE_INVALID_HANDLE, int priority=0, int signal_number=ACE_SIGRTMIN)
- Public Member Functions inherited from ACE_Proactor_Impl
virtual ~ACE_Proactor_Impl (void)
 Virtual destruction.
- Public Member Functions inherited from ACE_Event_Handler
virtual ~ACE_Event_Handler (void)
 Destructor is virtual to enable proper cleanup.
virtual void set_handle (ACE_HANDLE)
 Set the I/O handle.
virtual int priority (void) const
virtual void priority (int priority)
 Set the priority of the Event_Handler.
virtual int handle_input (ACE_HANDLE fd=ACE_INVALID_HANDLE)
 Called when input events occur (e.g., connection or data).
virtual int handle_output (ACE_HANDLE fd=ACE_INVALID_HANDLE)
virtual int handle_exception (ACE_HANDLE fd=ACE_INVALID_HANDLE)
 Called when an exceptional events occur (e.g., SIGURG).
virtual int handle_timeout (const ACE_Time_Value &current_time, const void *act=0)
virtual int handle_exit (ACE_Process *)
 Called when a process exits.
virtual int handle_close (ACE_HANDLE handle, ACE_Reactor_Mask close_mask)
virtual int handle_signal (int signum, siginfo_t *=0, ucontext_t *=0)
virtual int resume_handler (void)
virtual int handle_qos (ACE_HANDLE=ACE_INVALID_HANDLE)
virtual int handle_group_qos (ACE_HANDLE=ACE_INVALID_HANDLE)
virtual void reactor (ACE_Reactor *reactor)
 Set the event demultiplexors.
virtual ACE_Reactorreactor (void) const
 Get the event demultiplexors.
virtual
ACE_Reactor_Timer_Interface
reactor_timer_interface (void) const
 Get only the reactor's timer related interface.
virtual Reference_Count add_reference (void)
 Increment reference count on the handler.
virtual Reference_Count remove_reference (void)
 Decrement reference count on the handler.
Reference_Counting_Policyreference_counting_policy (void)
 Current Reference_Counting_Policy.

Static Public Member Functions

static void aio_completion_func (sigval cb_data)

Protected Member Functions

virtual int handle_events (ACE_Time_Value &wait_time)
virtual int handle_events (void)
virtual ssize_t allocate_aio_slot (ACE_POSIX_Asynch_Result *result)
 Find free slot to store result and aiocb pointer.
virtual int notify_completion (int sig_num)
int handle_events_i (u_long milli_seconds)
- Protected Member Functions inherited from ACE_POSIX_AIOCB_Proactor
 ACE_POSIX_AIOCB_Proactor (size_t nmaxop, ACE_POSIX_Proactor::Proactor_Type ptype)
virtual int get_result_status (ACE_POSIX_Asynch_Result *asynch_result, int &error_status, size_t &transfer_count)
int create_result_aiocb_list (void)
 Create aiocb list.
int delete_result_aiocb_list (void)
void create_notify_manager (void)
void delete_notify_manager (void)
void check_max_aio_num (void)
void set_notify_handle (ACE_HANDLE h)
 To identify requests from Notify_Pipe_Manager.
int start_deferred_aio (void)
 Start deferred AIO if necessary.
virtual int cancel_aiocb (ACE_POSIX_Asynch_Result *result)
 Cancel running or deferred AIO.
ACE_POSIX_Asynch_Resultfind_completed_aio (int &error_status, size_t &transfer_count, size_t &index, size_t &count)
 Extract the results of aio.
virtual int start_aio_i (ACE_POSIX_Asynch_Result *result)
 Initiate an aio operation.
int putq_result (ACE_POSIX_Asynch_Result *result)
 Put "post_completed" result into the internal queue.
ACE_POSIX_Asynch_Resultgetq_result (void)
 Get "post_completed" result from the internal queue.
int clear_result_queue (void)
 Clear the internal results queue.
int process_result_queue (void)
 Process the internal results queue.
- Protected Member Functions inherited from ACE_POSIX_Proactor
 ACE_POSIX_Proactor (void)
 Constructor.
void application_specific_code (ACE_POSIX_Asynch_Result *asynch_result, size_t bytes_transferred, const void *completion_key, u_long error)
virtual int post_wakeup_completions (int how_many)

Protected Attributes

ACE_SYNCH_SEMAPHORE sema_
- Protected Attributes inherited from ACE_POSIX_AIOCB_Proactor
ACE_AIOCB_Notify_Pipe_Manageraiocb_notify_pipe_manager_
aiocb ** aiocb_list_
ACE_POSIX_Asynch_Result ** result_list_
size_t aiocb_list_max_size_
 To maintain the maximum size of the array (list).
size_t aiocb_list_cur_size_
 To maintain the current size of the array (list).
ACE_SYNCH_MUTEX mutex_
 Mutex to protect work with lists.
ACE_HANDLE notify_pipe_read_handle_
size_t num_deferred_aiocb_
size_t num_started_aio_
 Number active,i.e. running requests.
ACE_Unbounded_Queue
< ACE_POSIX_Asynch_Result * > 
result_queue_
 Queue which keeps "post_completed" ACE_POSIX_Asynch_Result's.
- Protected Attributes inherited from ACE_POSIX_Proactor
ACE_Handler wakeup_handler_
int os_id_

Detailed Description

Implementation of Callback-based Proactor };.


Constructor & Destructor Documentation

ACE_POSIX_CB_Proactor::~ACE_POSIX_CB_Proactor ( void  )
virtual

Destructor.

ACE_POSIX_CB_Proactor::ACE_POSIX_CB_Proactor ( size_t  max_aio_operations = ACE_AIO_DEFAULT_SIZE)

Constructor defines max number asynchronous operations that can be started at the same time.


Member Function Documentation

void ACE_POSIX_CB_Proactor::aio_completion_func ( sigval  cb_data)
static
ssize_t ACE_POSIX_CB_Proactor::allocate_aio_slot ( ACE_POSIX_Asynch_Result result)
protectedvirtual

Find free slot to store result and aiocb pointer.

Reimplemented from ACE_POSIX_AIOCB_Proactor.

ACE_POSIX_Proactor::Proactor_Type ACE_POSIX_CB_Proactor::get_impl_type ( void  )
virtual

Reimplemented from ACE_POSIX_AIOCB_Proactor.

int ACE_POSIX_CB_Proactor::handle_events ( ACE_Time_Value wait_time)
protectedvirtual

Dispatch a single set of events. If wait_time elapses before any events occur, return 0. Return 1 on success i.e., when a completion is dispatched, non-zero (-1) on errors and errno is set accordingly.

Reimplemented from ACE_POSIX_AIOCB_Proactor.

int ACE_POSIX_CB_Proactor::handle_events ( void  )
protectedvirtual

Block indefinitely until at least one event is dispatched. Dispatch a single set of events. If wait_time elapses before any events occur, return 0. Return 1 on success i.e., when a completion is dispatched, non-zero (-1) on errors and errno is set accordingly.

Reimplemented from ACE_POSIX_AIOCB_Proactor.

int ACE_POSIX_CB_Proactor::handle_events_i ( u_long  milli_seconds)
protected

Dispatch a single set of events. If milli_seconds elapses before any events occur, return 0. Return 1 if a completion is dispatched. Return -1 on errors.

Reimplemented from ACE_POSIX_AIOCB_Proactor.

int ACE_POSIX_CB_Proactor::notify_completion ( int  sig_num)
protectedvirtual

Notify queue of "post_completed" ACE_POSIX_Asynch_Results called from post_completion method

Reimplemented from ACE_POSIX_AIOCB_Proactor.


Member Data Documentation

ACE_SYNCH_SEMAPHORE ACE_POSIX_CB_Proactor::sema_
protected

Semaphore variable to notify used to wait the first AIO start


The documentation for this class was generated from the following files: