NAME

ACE_Handler_Repository - Used to map ACE_HANDLEs onto the appropriate ACE_Event_Handler *.

SYNOPSIS


#include <ace/Reactor.h>


class ACE_Handler_Repository
{
  public:
    friend class ACE_Handler_Repository_Iterator;
    ACE_Handler_Repository (void);
    int open (size_t size);
    int close (ACE_Reactor *);
    ACE_Event_Handler *find (ACE_HANDLE);
    int bind (ACE_HANDLE, ACE_Event_Handler *);
    int unbind (
        ACE_HANDLE,
        ACE_Handle_Set &rd_mask,
        ACE_Handle_Set &wr_mask,
        ACE_Handle_Set &ex_mask
        );
    int invalid_handle (ACE_HANDLE);
    size_t max_handlep1 (void);
    void dump (void) const;
    ACE_ALLOC_HOOK_DECLARE;
  private:
    ssize_t max_size_;
    ssize_t cur_size_;

    struct ACE_NT_EH_Record
    {
      public:
        ACE_HANDLE handle_;
        ACE_Event_Handler *event_handler_;
    };

ACE_NT_EH_Record *event_handlers_; ACE_HANDLE max_handlep1_; ACE_Event_Handler **event_handlers_; };

DESCRIPTION

This class is necessary to shield differences between UNIX and WIN32. In UNIX, ACE_HANDLE is an int, whereas in WIN32 it's a void *. This class hides all these details from the bulk of the Reactor code.

Initialization and termination methods.

ACE_Handler_Repository (void);
int open (size_t size);
int close (ACE_Reactor *);

Search structure operations.

ACE_Event_Handler *find (ACE_HANDLE);
int bind (ACE_HANDLE, ACE_Event_Handler *);
int unbind (
    ACE_HANDLE,
    ACE_Handle_Set &rd_mask,
    ACE_Handle_Set &wr_mask,
    ACE_Handle_Set &ex_mask
    );
Performs sanity checking on the ACE_HANDLE.
int invalid_handle (ACE_HANDLE);
size_t max_handlep1 (void);
void dump (void) const;
ACE_ALLOC_HOOK_DECLARE;

AUTHOR

Doug Schmidt

LIBRARY

ace