ACE_HANDLE
s onto the appropriate
ACE_Event_Handler
* and other information.
#include <ace/ReactorEx.h>
class ACE_ReactorEx_Handler_Repository {
public:
friend class ACE_ReactorEx;
struct Common_Info {
public:
int io_entry_;
ACE_Event_Handler *event_handler_;
ACE_HANDLE io_handle_;
long network_events_;
int delete_event_;
Common_Info (void);
void reset (void);
void set ( int io_entry, ACE_Event_Handler *event_handler, ACE_HANDLE io_handle, long network_events, int delete_event );
void set (Common_Info &common_info);
};
struct Current_Info
{
public:
int delete_entry_;
ACE_Reactor_Mask close_masks_;
int suspend_entry_;
Current_Info (void);
void reset (void);
void set (
int io_entry,
ACE_Event_Handler *event_handler,
ACE_HANDLE io_handle,
long network_events,
int delete_event,
int delete_entry = 0,
ACE_Reactor_Mask close_masks = 0,
int suspend_entry = 0
);
void set (
Common_Info &common_info,
int delete_entry = 0,
ACE_Reactor_Mask close_masks = 0,
int suspend_entry = 0
);
};
struct To_Be_Added_Info
{
public:
ACE_HANDLE event_handle_;
To_Be_Added_Info (void);
void reset (void);
void set (
ACE_HANDLE event_handle,
int io_entry,
ACE_Event_Handler *event_handler,
ACE_HANDLE io_handle,
long network_events,
int delete_event
);
void set (ACE_HANDLE event_handle, Common_Info &common_info);
};
struct Suspended_Info
{
public:
ACE_HANDLE event_handle_;
int delete_entry_;
ACE_Reactor_Mask close_masks_;
int resume_entry_;
Suspended_Info (void);
void reset (void);
void set (
ACE_HANDLE event_handle,
int io_entry,
ACE_Event_Handler *event_handler,
ACE_HANDLE io_handle,
long network_events,
int delete_event,
int resume = 0,
int delete_entry = 0,
ACE_Reactor_Mask close_masks = 0
);
void set (
ACE_HANDLE event_handle,
Common_Info &common_info,
int resume = 0,
int delete_entry = 0,
ACE_Reactor_Mask close_masks = 0
);
};
ACE_ReactorEx_Handler_Repository (ACE_ReactorEx &reactorEx);
virtual ~ACE_ReactorEx_Handler_Repository (void);
int open (size_t size);
int close (void);
int bind (ACE_HANDLE, ACE_Event_Handler *);
int bind_i (
int io_entry,
ACE_Event_Handler *event_handler,
long network_events,
ACE_HANDLE io_handle,
ACE_HANDLE event_handle,
int delete_event
);
int unbind (ACE_HANDLE, ACE_Reactor_Mask mask);
int unbind_i (
ACE_HANDLE,
ACE_Reactor_Mask mask,
int &changes_required
);
void unbind_all (void);
int invalid_handle (ACE_HANDLE handle) const;
size_t max_handlep1 (void) const;
ACE_HANDLE *handles (void) const;
Current_Info *current_info (void) const;
virtual int changes_required (void);
virtual int make_changes (void);
int scheduled_for_deletion (size_t index) const;
int add_network_events_i (
ACE_Reactor_Mask mask,
ACE_HANDLE io_handle,
long &new_mask,
ACE_HANDLE &event_handle,
int &delete_event
);
long remove_network_events_i (
long existing_masks,
ACE_Reactor_Mask to_be_removed_masks
);
int suspend_handler_i (ACE_HANDLE handle, int &changes_required);
int resume_handler_i (ACE_HANDLE handle, int &changes_required);
int handle_deletions (void);
int handle_additions (void);
int remove_handler_i (size_t index, ACE_Reactor_Mask mask = 0);
int remove_suspended_handler_i (
size_t index,
ACE_Reactor_Mask mask = 0
);
void dump (void) const;
protected:
ACE_ReactorEx &reactorEx_;
size_t max_size_;
size_t max_handlep1_;
ACE_HANDLE *current_handles_;
Current_Info *current_info_;
To_Be_Added_Info *to_be_added_info_;
Suspended_Info *current_suspended_info_;
size_t suspended_handles_;
size_t handles_to_be_suspended_;
size_t handles_to_be_resumed_;
size_t handles_to_be_deleted_;
size_t handles_to_be_added_;
};
int bind (ACE_HANDLE, ACE_Event_Handler *);
ACE_Event_Handler *
to the ACE_HANDLE
. This is for
the simple event entry.
int bind_i (
int io_entry,
ACE_Event_Handler *event_handler,
long network_events,
ACE_HANDLE io_handle,
ACE_HANDLE event_handle,
int delete_event
);
Event_Handler
entry into the system. This method
assumes that the lock are head *before* this method is invoked.
int unbind (ACE_HANDLE, ACE_Reactor_Mask mask);
ACE_HANDLE
in accordance with the mask
.
int unbind_i (
ACE_HANDLE,
ACE_Reactor_Mask mask,
int &changes_required
);
unbind
void unbind_all (void);
ACE_HANDLE, ACE_Event_Handler
tuples.
handle
to make sure it's a valid ACE_HANDLE
int invalid_handle (ACE_HANDLE handle) const;
size_t max_handlep1 (void) const;
ACE_HANDLE *handles (void) const;
ACE_HANDLE
*'s.
Current_Info *current_info (void) const;
ACE_Event_Handler
*'s.
virtual int changes_required (void);
virtual int make_changes (void);
int scheduled_for_deletion (size_t index) const;
index
has been scheduled for deletion
int add_network_events_i (
ACE_Reactor_Mask mask,
ACE_HANDLE io_handle,
long &new_mask,
ACE_HANDLE &event_handle,
int &delete_event
);
ReactorEx
. Note that because the
Event_Handler
may already be in the handler repository, we may
have to find the old event and the old network events
long remove_network_events_i (
long existing_masks,
ACE_Reactor_Mask to_be_removed_masks
);
ReactorEx
int suspend_handler_i (ACE_HANDLE handle, int &changes_required);
int resume_handler_i (ACE_HANDLE handle, int &changes_required);
int handle_deletions (void);
int handle_additions (void);
int remove_handler_i (size_t index, ACE_Reactor_Mask mask = 0);
ACE_Event_Handler
at index
from the table.
int remove_suspended_handler_i (
size_t index,
ACE_Reactor_Mask mask = 0
);
ACE_Event_Handler
at index
from the table.
void dump (void) const;