Reference

ACE_WFMO_Reactor_Handler_Repository(3)

Used to map ACE_HANDLEs onto the appropriate ACE_Event_Handler * and other information.

NAME

ACE_WFMO_Reactor_Handler_Repository -

Used to map ACE_HANDLEs onto the appropriate ACE_Event_Handler * and other information.

SYNOPSIS

#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_; };

Search structure operations.

int bind (ACE_HANDLE, ACE_Event_Handler *);

Bind the 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
    );

Insert I/O 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);

Remove the binding of ACE_HANDLE in accordance with the mask.

int unbind_i (
    ACE_HANDLE,
    ACE_Reactor_Mask mask,
    int &changes_required
    );

Non-lock-grabbing version of unbind

void unbind_all (void);

Remove all bindings of ACE_HANDLE, ACE_Event_Handler tuples.

Sanity checking.

Check the handle to make sure it's a valid ACE_HANDLE

int invalid_handle (ACE_HANDLE handle) const;

Accessors.

size_t max_handlep1 (void) const;

Maximum ACE_HANDLE value, plus 1.

ACE_HANDLE *handles (void) const;

Pointer to the beginning of the current array of ACE_HANDLE *'s.

Current_Info *current_info (void) const;

Pointer to the beginning of the current array of ACE_Event_Handler *'s.

virtual int changes_required (void);

Check if changes to the handle set are required.

virtual int make_changes (void);

Make changes to the handle set

int scheduled_for_deletion (size_t slot) const;

Check to see if 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
    );

This method is used to calculate the network mask after a mask_op request to 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
    );

This method is used to change the network mask left (if any) after a remove request to WFMO_Reactor

int suspend_handler_i (ACE_HANDLE handle, int &changes_required);

Temporarily suspend entry

int resume_handler_i (ACE_HANDLE handle, int &changes_required);

Resume suspended entry

int make_changes_in_current_infos (void);

Deletions and suspensions in current_info_

int make_changes_in_suspension_infos (void);

Deletions and resumptions in current_suspended_info_

int make_changes_in_to_be_added_infos (void);

Deletions in to_be_added_info_, or transfers to current_info_ or current_suspended_info_ from to_be_added_info_

int remove_handler_i (size_t slot, ACE_Reactor_Mask mask);

Removes the ACE_Event_Handler at slot from the table.

int remove_suspended_handler_i (size_t slot, ACE_Reactor_Mask mask);

Removes the 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
    );

Removes the ACE_Event_Handler at slot from the table.

int handler (
    ACE_HANDLE handle,
    ACE_Reactor_Mask mask,
    ACE_Event_Handler **event_handler = 0
    );

Check to see if 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;

Dump the state of an object.

AUTHOR

Irfan Pyarali, Tim Harrison, and Doug Schmidt

LIBRARY

ace