ACE  6.1.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Types | Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | Friends
ACE_Select_Reactor_Handler_Repository Class Reference

Used to map ACE_HANDLEs onto the appropriate ACE_Event_Handler *. More...

#include <Select_Reactor_Base.h>

Collaboration diagram for ACE_Select_Reactor_Handler_Repository:
Collaboration graph
[legend]

List of all members.

Public Types

typedef ACE_HANDLE key_type
typedef ACE_Event_Handlervalue_type
typedef
ACE_Hash_Map_Manager_Ex
< key_type, value_type,
ACE_Hash< key_type >
, std::equal_to< key_type >
, ACE_Null_Mutex
map_type
typedef map_type::size_type max_handlep1_type
typedef map_type::size_type size_type

Public Member Functions

 ACE_Select_Reactor_Handler_Repository (ACE_Select_Reactor_Impl &)
 Default "do-nothing" constructor.
int open (size_type size)
 Initialize a repository of the appropriate size.
int close (void)
 Close down the repository.
ACE_Event_Handlerfind (ACE_HANDLE handle)
int bind (ACE_HANDLE, ACE_Event_Handler *, ACE_Reactor_Mask)
int unbind (ACE_HANDLE, ACE_Reactor_Mask mask)
 Remove the binding of ACE_HANDLE in accordance with the mask.
int unbind_all (void)
 Remove all the <ACE_HANDLE, ACE_Event_Handler> tuples.
bool invalid_handle (ACE_HANDLE handle)
bool handle_in_range (ACE_HANDLE handle)
size_type size (void) const
 Returns the current table size.
max_handlep1_type max_handlep1 (void) const
 Maximum ACE_HANDLE value, plus 1.
void dump (void) const
 Dump the state of an object.

Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks.

Private Member Functions

int unbind (ACE_HANDLE handle, map_type::iterator pos, ACE_Reactor_Mask mask)
map_type::iterator find_eh (ACE_HANDLE handle)

Private Attributes

ACE_Select_Reactor_Implselect_reactor_
 Reference to our Select_Reactor.
map_type event_handlers_
 Underlying table of event handlers.

Friends

class ACE_Select_Reactor_Handler_Repository_Iterator

Detailed Description

Used to map ACE_HANDLEs onto the appropriate ACE_Event_Handler *.

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 ACE_Select_Reactor code. All of these methods are called with the main <Select_Reactor> token lock held.


Member Typedef Documentation

The NT version implements this via a hash map ACE_Event_Handler*. Since NT implements ACE_HANDLE as a void * we can't directly index into this array. Therefore, we must explicitly map ACE_HANDLE to ACE_Event_Handler.


Constructor & Destructor Documentation

Default "do-nothing" constructor.


Member Function Documentation

int ACE_Select_Reactor_Handler_Repository::bind ( ACE_HANDLE  handle,
ACE_Event_Handler event_handler,
ACE_Reactor_Mask  mask 
)

Bind the ACE_Event_Handler * to the ACE_HANDLE with the appropriate ACE_Reactor_Mask settings.

Close down the repository.

Dump the state of an object.

Return the ACE_Event_Handler* associated with ACE_HANDLE.

Returns:
iterator corresponding ACE_Event_Handler* associated with ACE_HANDLE.

Maximum ACE_HANDLE value, plus 1.

Initialize a repository of the appropriate size.

On Unix platforms, the size parameter should be as large as the maximum number of file descriptors allowed for a given process. This is necessary since a file descriptor is used to directly index the array of event handlers maintained by the Reactor's handler repository. Direct indexing is used for efficiency reasons.

Returns the current table size.

int ACE_Select_Reactor_Handler_Repository::unbind ( ACE_HANDLE  handle,
ACE_Reactor_Mask  mask 
) [inline]

Remove the binding of ACE_HANDLE in accordance with the mask.

int ACE_Select_Reactor_Handler_Repository::unbind ( ACE_HANDLE  handle,
map_type::iterator  pos,
ACE_Reactor_Mask  mask 
) [private]

Remove the binding of handle corresponding to position pos in accordance with the mask.

Remove all the <ACE_HANDLE, ACE_Event_Handler> tuples.


Friends And Related Function Documentation


Member Data Documentation

Declare the dynamic allocation hooks.

Underlying table of event handlers.

Reference to our Select_Reactor.


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