Used to map ACE_HANDLE
s onto the appropriate
ACE_Event_Handler
* and other information.
#include <ace/WFMO_Reactor.h>
class ACE_WFMO_Reactor_Handler_Repository {
public:
friend class ACE_WFMO_Reactor;
class Common_Info {
public:
int io_entry_;
ACE_Event_Handler *event_handler_;
ACE_HANDLE io_handle_;
long network_events_;
int delete_event_;
int delete_entry_;
ACE_Reactor_Mask close_masks_;
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, int delete_entry, ACE_Reactor_Mask close_masks );
void set (Common_Info &common_info);
void dump (void) const;
};
class Current_Info
{
public:
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 = ACE_Event_Handler::NULL_MASK,
int suspend_entry = 0
);
void set (Common_Info &common_info, int suspend_entry = 0);
void dump (ACE_HANDLE event_handle) const;
};
class To_Be_Added_Info
{
public:
ACE_HANDLE event_handle_;
int suspend_entry_;
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,
int delete_entry = 0,
ACE_Reactor_Mask close_masks = ACE_Event_Handler::NULL_MASK,
int suspend_entry = 0
);
void set (
ACE_HANDLE event_handle,
Common_Info &common_info,
int suspend_entry = 0
);
void dump (void) const;
};
class Suspended_Info
{
public:
ACE_HANDLE event_handle_;
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 delete_entry = 0,
ACE_Reactor_Mask close_masks = 0,
int resume_entry = 0
);
void set (
ACE_HANDLE event_handle,
Common_Info &common_info,
int resume_entry = 0
);
void dump (void) const;
};
ACE_WFMO_Reactor_Handler_Repository (
ACE_WFMO_Reactor &wfmo_reactor
);
virtual ~ACE_WFMO_Reactor_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 slot) const;
int modify_network_events_i (
ACE_HANDLE io_handle,
ACE_Reactor_Mask new_masks,
ACE_Reactor_Mask &old_masks,
long &new_network_events,
ACE_HANDLE &event_handle,
int &delete_event,
int operation
);
ACE_Reactor_Mask bit_ops (
long &existing_masks,
ACE_Reactor_Mask to_be_removed_masks,
int operation
);
int suspend_handler_i (ACE_HANDLE handle, int &changes_required);
int resume_handler_i (ACE_HANDLE handle, int &changes_required);
int make_changes_in_current_infos (void);
int make_changes_in_suspension_infos (void);
int make_changes_in_to_be_added_infos (void);
int remove_handler_i (size_t slot, ACE_Reactor_Mask mask);
int remove_suspended_handler_i (
size_t slot,
ACE_Reactor_Mask mask
);
int remove_to_be_added_handler_i (
size_t slot,
ACE_Reactor_Mask to_be_removed_masks
);
int handler (
ACE_HANDLE handle,
ACE_Reactor_Mask mask,
ACE_Event_Handler **event_handler = 0
);
void dump (void) const;
protected:
ACE_WFMO_Reactor &wfmo_reactor_;
size_t max_size_;
ACE_HANDLE *current_handles_;
Current_Info *current_info_;
size_t max_handlep1_;
To_Be_Added_Info *to_be_added_info_;
size_t handles_to_be_added_;
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_;
};
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 slot) const;
slot
has been scheduled for deletion
int modify_network_events_i (
ACE_HANDLE io_handle,
ACE_Reactor_Mask new_masks,
ACE_Reactor_Mask &old_masks,
long &new_network_events,
ACE_HANDLE &event_handle,
int &delete_event,
int operation
);
WFMO_Reactor
. 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
ACE_Reactor_Mask bit_ops (
long &existing_masks,
ACE_Reactor_Mask to_be_removed_masks,
int operation
);
WFMO_Reactor
int suspend_handler_i (ACE_HANDLE handle, int &changes_required);
int resume_handler_i (ACE_HANDLE handle, int &changes_required);
int make_changes_in_current_infos (void);
int make_changes_in_suspension_infos (void);
int make_changes_in_to_be_added_infos (void);
int remove_handler_i (size_t slot, ACE_Reactor_Mask mask);
ACE_Event_Handler
at slot
from the table.
int remove_suspended_handler_i (size_t slot, ACE_Reactor_Mask mask);
ACE_Event_Handler
at slot
from the table.
int remove_to_be_added_handler_i (
size_t slot,
ACE_Reactor_Mask to_be_removed_masks
);
ACE_Event_Handler
at slot
from the table.
int handler (
ACE_HANDLE handle,
ACE_Reactor_Mask mask,
ACE_Event_Handler **event_handler = 0
);
handle
is associated with a valid Event_Handler
bound to mask
. Return the event_handler
associated with this
handler
if event_handler
!= 0.
void dump (void) const;