ACE  6.1.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
ACE_POSIX_Asynch_Connect Class Reference

#include <POSIX_Asynch_IO.h>

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

Public Member Functions

 ACE_POSIX_Asynch_Connect (ACE_POSIX_Proactor *posix_proactor)
 Constructor.
 
virtual ~ACE_POSIX_Asynch_Connect (void)
 Destructor.
 
int open (const ACE_Handler::Proxy_Ptr &handler_proxy, ACE_HANDLE handle, const void *completion_key, ACE_Proactor *proactor=0)
 
int connect (ACE_HANDLE connect_handle, const ACE_Addr &remote_sap, const ACE_Addr &local_sap, int reuse_addr, const void *act, int priority, int signal_number=0)
 
int cancel (void)
 
int close (void)
 
ACE_HANDLE get_handle (void) const
 virtual from ACE_Event_Handler
 
void set_handle (ACE_HANDLE handle)
 virtual from ACE_Event_Handler
 
int handle_output (ACE_HANDLE handle)
 
int handle_close (ACE_HANDLE handle, ACE_Reactor_Mask close_mask)
 virtual from ACE_Event_Handler
 
- Public Member Functions inherited from ACE_Asynch_Connect_Impl
virtual ~ACE_Asynch_Connect_Impl (void)
 
- Public Member Functions inherited from ACE_Asynch_Operation_Impl
virtual ~ACE_Asynch_Operation_Impl (void)
 
- Public Member Functions inherited from ACE_POSIX_Asynch_Operation
ACE_Proactorproactor (void) const
 Return the underlying proactor.
 
ACE_POSIX_Proactorposix_proactor (void) const
 Return the underlying Proactor implementation.
 
- Public Member Functions inherited from ACE_Event_Handler
virtual ~ACE_Event_Handler (void)
 Destructor is virtual to enable proper cleanup.
 
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_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_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.
 

Private Types

typedef ACE_Map_Manager
< ACE_HANDLE,
ACE_POSIX_Asynch_Connect_Result
*, ACE_SYNCH_NULL_MUTEX
MAP_MANAGER
 

Private Member Functions

int connect_i (ACE_POSIX_Asynch_Connect_Result *result, const ACE_Addr &remote_sap, const ACE_Addr &local_sap, int reuse_addr)
 
int post_result (ACE_POSIX_Asynch_Connect_Result *result, bool flg_post)
 
int cancel_uncompleted (bool flg_notify, ACE_Handle_Set &set)
 Cancel uncompleted connect operations.
 

Private Attributes

bool flg_open_
 
MAP_MANAGER result_map_
 Map of Result pointers that correspond to all the pending connects.
 
ACE_SYNCH_MUTEX lock_
 

Additional Inherited Members

- Public Types inherited from ACE_Event_Handler
enum  {
  LO_PRIORITY = 0, HI_PRIORITY = 10, NULL_MASK = 0, READ_MASK = (1 << 0),
  WRITE_MASK = (1 << 1), EXCEPT_MASK = (1 << 2), ACCEPT_MASK = (1 << 3), CONNECT_MASK = (1 << 4),
  TIMER_MASK = (1 << 5), QOS_MASK = (1 << 6), GROUP_QOS_MASK = (1 << 7), SIGNAL_MASK = (1 << 8),
  ALL_EVENTS_MASK, RWE_MASK, DONT_CALL = (1 << 9)
}
 
enum  { ACE_EVENT_HANDLER_NOT_RESUMED = -1, ACE_REACTOR_RESUMES_HANDLER = 0, ACE_APPLICATION_RESUMES_HANDLER }
 
typedef long Reference_Count
 Reference count type.
 
- Static Public Member Functions inherited from ACE_Event_Handler
static ACE_THR_FUNC_RETURN read_adapter (void *event_handler)
 
static int register_stdin_handler (ACE_Event_Handler *eh, ACE_Reactor *reactor, ACE_Thread_Manager *thr_mgr, int flags=THR_DETACHED)
 
static int remove_stdin_handler (ACE_Reactor *reactor, ACE_Thread_Manager *thr_mgr)
 Performs the inverse of the register_stdin_handler() method.
 
- Protected Types inherited from ACE_Event_Handler
typedef ACE_Atomic_Op
< ACE_SYNCH_MUTEX,
Reference_Count
Atomic_Reference_Count
 Typedef for implementation of reference counting.
 
- Protected Member Functions inherited from ACE_Asynch_Connect_Impl
 ACE_Asynch_Connect_Impl (void)
 Do-nothing constructor.
 
- Protected Member Functions inherited from ACE_POSIX_Asynch_Operation
 ACE_POSIX_Asynch_Operation (ACE_POSIX_Proactor *posix_proactor)
 Contructor.
 
virtual ~ACE_POSIX_Asynch_Operation (void)
 Destructor.
 
- Protected Member Functions inherited from ACE_Event_Handler
 ACE_Event_Handler (ACE_Reactor *=0, int priority=ACE_Event_Handler::LO_PRIORITY)
 Force ACE_Event_Handler to be an abstract base class.
 
- Protected Attributes inherited from ACE_POSIX_Asynch_Operation
ACE_POSIX_Proactorposix_proactor_
 
ACE_Proactorproactor_
 Proactor that this Asynch IO will be registered with.
 
ACE_Handler::Proxy_Ptr handler_proxy_
 Handler that will receive the callback.
 
ACE_HANDLE handle_
 I/O handle used for reading.
 
- Protected Attributes inherited from ACE_Event_Handler
Atomic_Reference_Count reference_count_
 Reference count.
 

Member Typedef Documentation

true - Connect is registered in ACE_Asynch_Pseudo_Task false - Aceept is deregisted in ACE_Asynch_Pseudo_Task

Constructor & Destructor Documentation

ACE_POSIX_Asynch_Connect::ACE_POSIX_Asynch_Connect ( ACE_POSIX_Proactor posix_proactor)

Constructor.

ACE_POSIX_Asynch_Connect::~ACE_POSIX_Asynch_Connect ( void  )
virtual

Destructor.

Member Function Documentation

int ACE_POSIX_Asynch_Connect::cancel ( void  )
virtual

Cancel all pending pseudo-asynchronus requests Behavior as usual AIO request

Reimplemented from ACE_POSIX_Asynch_Operation.

int ACE_POSIX_Asynch_Connect::cancel_uncompleted ( bool  flg_notify,
ACE_Handle_Set set 
)
private

Cancel uncompleted connect operations.

  • flg_notify Indicates whether or not we should send notification about canceled accepts. If this is false, don't send notifications about canceled connects. If true, notify user about canceled connects according POSIX standards we should receive notifications on canceled AIO requests.
int ACE_POSIX_Asynch_Connect::close ( void  )

Close performs cancellation of all pending requests.

int ACE_POSIX_Asynch_Connect::connect ( ACE_HANDLE  connect_handle,
const ACE_Addr remote_sap,
const ACE_Addr local_sap,
int  reuse_addr,
const void *  act,
int  priority,
int  signal_number = 0 
)
virtual

This starts off an asynchronous connect.

  • connect_handle will be used for the connect call. If ACE_INVALID_HANDLE is specified, a new handle will be created.

Implements ACE_Asynch_Connect_Impl.

int ACE_POSIX_Asynch_Connect::connect_i ( ACE_POSIX_Asynch_Connect_Result result,
const ACE_Addr remote_sap,
const ACE_Addr local_sap,
int  reuse_addr 
)
private
ACE_HANDLE ACE_POSIX_Asynch_Connect::get_handle ( void  ) const
virtual

virtual from ACE_Event_Handler

Reimplemented from ACE_Event_Handler.

int ACE_POSIX_Asynch_Connect::handle_close ( ACE_HANDLE  handle,
ACE_Reactor_Mask  close_mask 
)
virtual

virtual from ACE_Event_Handler

Reimplemented from ACE_Event_Handler.

int ACE_POSIX_Asynch_Connect::handle_output ( ACE_HANDLE  handle)
virtual

virtual from ACE_Event_Handler The default action on handle_input() and handle_exception is to return -1. Since that's what we want to do, just reuse them. handle_output(), however, is where successful connects are reported.

Reimplemented from ACE_Event_Handler.

int ACE_POSIX_Asynch_Connect::open ( const ACE_Handler::Proxy_Ptr handler_proxy,
ACE_HANDLE  handle,
const void *  completion_key,
ACE_Proactor proactor = 0 
)
virtual

This belongs to ACE_POSIX_Asynch_Operation. We forward this call to that method. We have put this here to avoid the compiler warnings.

Reimplemented from ACE_POSIX_Asynch_Operation.

int ACE_POSIX_Asynch_Connect::post_result ( ACE_POSIX_Asynch_Connect_Result result,
bool  flg_post 
)
private
void ACE_POSIX_Asynch_Connect::set_handle ( ACE_HANDLE  handle)
virtual

virtual from ACE_Event_Handler

Reimplemented from ACE_Event_Handler.

Member Data Documentation

bool ACE_POSIX_Asynch_Connect::flg_open_
private
ACE_SYNCH_MUTEX ACE_POSIX_Asynch_Connect::lock_
private

The lock to protect the result map which is shared. The queue is updated by main thread in the register function call and through the auxillary thread in the asynch pseudo task.

MAP_MANAGER ACE_POSIX_Asynch_Connect::result_map_
private

Map of Result pointers that correspond to all the pending connects.


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