ACE  6.4.2
Classes | Public Member Functions | Protected Attributes | Friends | List of all members
ACE_WFMO_Reactor_Handler_Repository Class Reference

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

#include <WFMO_Reactor.h>

Collaboration diagram for ACE_WFMO_Reactor_Handler_Repository:
Collaboration graph
[legend]

Classes

class  Common_Info
 This struct contains the necessary information for every Event_Handler entry. The reason the event is not in this structure is because we need to pass an event array into WaitForMultipleObjects and therefore keeping the events separate makes sense. More...
 
class  Current_Info
 This structure inherits from the common structure to add information for current entries. More...
 
class  Suspended_Info
 This structure inherits from the common structure to add information for suspended entries. More...
 
class  To_Be_Added_Info
 This structure inherits from the common structure to add information for <to_be_added> entries. More...
 

Public Member Functions

 ACE_WFMO_Reactor_Handler_Repository (ACE_WFMO_Reactor &wfmo_reactor)
 Constructor. More...
 
virtual ~ACE_WFMO_Reactor_Handler_Repository (void)
 Destructor. More...
 
int open (size_t size)
 Initialize the repository of the appropriate size. More...
 
int close (void)
 Close down the handler repository. More...
 
int bind (ACE_HANDLE, ACE_Event_Handler *)
 
int bind_i (bool io_entry, ACE_Event_Handler *event_handler, long network_events, ACE_HANDLE io_handle, ACE_HANDLE event_handle, bool delete_event)
 
int unbind (ACE_HANDLE, ACE_Reactor_Mask mask)
 Remove the binding of ACE_HANDLE in accordance with the mask. More...
 
int unbind_i (ACE_HANDLE, ACE_Reactor_Mask mask, bool &changes_required)
 Non-lock-grabbing version of unbind. More...
 
void unbind_all (void)
 Remove all bindings of <ACE_HANDLE, ACE_Event_Handler> tuples. More...
 
int invalid_handle (ACE_HANDLE handle) const
 
DWORD max_handlep1 (void) const
 Maximum ACE_HANDLE value, plus 1. More...
 
ACE_HANDLE * handles (void) const
 
Current_Infocurrent_info (void) const
 
virtual bool changes_required (void)
 Check if changes to the handle set are required. More...
 
virtual int make_changes (void)
 Make changes to the handle set. More...
 
int scheduled_for_deletion (size_t slot) const
 Check to see if slot has been scheduled for deletion. More...
 
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, bool &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, bool &changes_required)
 Temporarily suspend entry. More...
 
int resume_handler_i (ACE_HANDLE handle, bool &changes_required)
 Resume suspended entry. More...
 
int make_changes_in_current_infos (void)
 Deletions and suspensions in current_info_. More...
 
int make_changes_in_suspension_infos (void)
 Deletions and resumptions in current_suspended_info_. More...
 
int make_changes_in_to_be_added_infos (void)
 
int remove_handler_i (size_t slot, ACE_Reactor_Mask mask)
 Removes the ACE_Event_Handler at slot from the table. More...
 
int remove_suspended_handler_i (size_t slot, ACE_Reactor_Mask mask)
 Removes the ACE_Event_Handler at slot from the table. More...
 
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. More...
 
ACE_Event_Handlerfind_handler (ACE_HANDLE handle)
 
int handler (ACE_HANDLE handle, ACE_Reactor_Mask mask, ACE_Event_Handler **event_handler=0)
 
ACE_Event_Handlerhandler (ACE_HANDLE handle, long &existing_masks)
 
void dump (void) const
 Dump the state of an object. More...
 

Protected Attributes

ACE_WFMO_Reactorwfmo_reactor_
 Reference to our <WFMO_Reactor>. More...
 
size_t max_size_
 Maximum number of handles. More...
 
ACE_HANDLE * current_handles_
 
Current_Infocurrent_info_
 Array of current entries in the table. More...
 
DWORD max_handlep1_
 A count of the number of active handles. More...
 
To_Be_Added_Infoto_be_added_info_
 Information for entries to be added. More...
 
size_t handles_to_be_added_
 Number of records to be added. More...
 
Suspended_Infocurrent_suspended_info_
 Currently suspended handles. More...
 
size_t suspended_handles_
 Number of currently suspended handles. More...
 
size_t handles_to_be_suspended_
 Number of records to be suspended. More...
 
size_t handles_to_be_resumed_
 Number of records to be resumed. More...
 
size_t handles_to_be_deleted_
 Number of records to be deleted. More...
 

Friends

class ACE_WFMO_Reactor
 
class ACE_WFMO_Reactor_Test
 

Detailed Description

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

This class is for internal ACE use only.

Constructor & Destructor Documentation

ACE_WFMO_Reactor_Handler_Repository::ACE_WFMO_Reactor_Handler_Repository ( ACE_WFMO_Reactor wfmo_reactor)

Constructor.

ACE_WFMO_Reactor_Handler_Repository::~ACE_WFMO_Reactor_Handler_Repository ( void  )
virtual

Destructor.

Member Function Documentation

int ACE_WFMO_Reactor_Handler_Repository::bind ( ACE_HANDLE  ,
ACE_Event_Handler  
)

Bind the ACE_Event_Handler * to the ACE_HANDLE. This is for the simple event entry.

int ACE_WFMO_Reactor_Handler_Repository::bind_i ( bool  io_entry,
ACE_Event_Handler event_handler,
long  network_events,
ACE_HANDLE  io_handle,
ACE_HANDLE  event_handle,
bool  delete_event 
)

Insert I/O Event_Handler entry into the system. This method assumes that the lock are head before this method is invoked.

ACE_Reactor_Mask ACE_WFMO_Reactor_Handler_Repository::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>

bool ACE_WFMO_Reactor_Handler_Repository::changes_required ( void  )
inlinevirtual

Check if changes to the handle set are required.

int ACE_WFMO_Reactor_Handler_Repository::close ( void  )
inline

Close down the handler repository.

ACE_WFMO_Reactor_Handler_Repository::Current_Info * ACE_WFMO_Reactor_Handler_Repository::current_info ( void  ) const
inline

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

void ACE_WFMO_Reactor_Handler_Repository::dump ( void  ) const

Dump the state of an object.

ACE_Event_Handler * ACE_WFMO_Reactor_Handler_Repository::find_handler ( ACE_HANDLE  handle)

Return the Event_Handler associated with handle. Return 0 if handle is not registered.

int ACE_WFMO_Reactor_Handler_Repository::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.

ACE_Event_Handler * ACE_WFMO_Reactor_Handler_Repository::handler ( ACE_HANDLE  handle,
long &  existing_masks 
)

Check to see if handle is associated with a valid Event_Handler. Return Event_Handler and associated masks.

ACE_HANDLE * ACE_WFMO_Reactor_Handler_Repository::handles ( void  ) const
inline

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

int ACE_WFMO_Reactor_Handler_Repository::invalid_handle ( ACE_HANDLE  handle) const
inline
int ACE_WFMO_Reactor_Handler_Repository::make_changes ( void  )
inlinevirtual

Make changes to the handle set.

int ACE_WFMO_Reactor_Handler_Repository::make_changes_in_current_infos ( void  )

Deletions and suspensions in current_info_.

int ACE_WFMO_Reactor_Handler_Repository::make_changes_in_suspension_infos ( void  )

Deletions and resumptions in current_suspended_info_.

int ACE_WFMO_Reactor_Handler_Repository::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_

DWORD ACE_WFMO_Reactor_Handler_Repository::max_handlep1 ( void  ) const
inline

Maximum ACE_HANDLE value, plus 1.

int ACE_WFMO_Reactor_Handler_Repository::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,
bool &  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

int ACE_WFMO_Reactor_Handler_Repository::open ( size_t  size)

Initialize the repository of the appropriate size.

int ACE_WFMO_Reactor_Handler_Repository::remove_handler_i ( size_t  slot,
ACE_Reactor_Mask  mask 
)

Removes the ACE_Event_Handler at slot from the table.

int ACE_WFMO_Reactor_Handler_Repository::remove_suspended_handler_i ( size_t  slot,
ACE_Reactor_Mask  mask 
)

Removes the ACE_Event_Handler at slot from the table.

int ACE_WFMO_Reactor_Handler_Repository::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 ACE_WFMO_Reactor_Handler_Repository::resume_handler_i ( ACE_HANDLE  handle,
bool &  changes_required 
)

Resume suspended entry.

int ACE_WFMO_Reactor_Handler_Repository::scheduled_for_deletion ( size_t  slot) const
inline

Check to see if slot has been scheduled for deletion.

int ACE_WFMO_Reactor_Handler_Repository::suspend_handler_i ( ACE_HANDLE  handle,
bool &  changes_required 
)

Temporarily suspend entry.

int ACE_WFMO_Reactor_Handler_Repository::unbind ( ACE_HANDLE  handle,
ACE_Reactor_Mask  mask 
)
inline

Remove the binding of ACE_HANDLE in accordance with the mask.

void ACE_WFMO_Reactor_Handler_Repository::unbind_all ( void  )

Remove all bindings of <ACE_HANDLE, ACE_Event_Handler> tuples.

int ACE_WFMO_Reactor_Handler_Repository::unbind_i ( ACE_HANDLE  handle,
ACE_Reactor_Mask  mask,
bool &  changes_required 
)

Non-lock-grabbing version of unbind.

Friends And Related Function Documentation

friend class ACE_WFMO_Reactor
friend
friend class ACE_WFMO_Reactor_Test
friend

Member Data Documentation

ACE_HANDLE* ACE_WFMO_Reactor_Handler_Repository::current_handles_
protected

Array of <ACE_HANDLEs> passed to <WaitForMultipleObjects>. This is not part of the structure as the handle array needs to be passed directly to <WaitForMultipleObjects>.

Current_Info* ACE_WFMO_Reactor_Handler_Repository::current_info_
protected

Array of current entries in the table.

Suspended_Info* ACE_WFMO_Reactor_Handler_Repository::current_suspended_info_
protected

Currently suspended handles.

size_t ACE_WFMO_Reactor_Handler_Repository::handles_to_be_added_
protected

Number of records to be added.

size_t ACE_WFMO_Reactor_Handler_Repository::handles_to_be_deleted_
protected

Number of records to be deleted.

size_t ACE_WFMO_Reactor_Handler_Repository::handles_to_be_resumed_
protected

Number of records to be resumed.

size_t ACE_WFMO_Reactor_Handler_Repository::handles_to_be_suspended_
protected

Number of records to be suspended.

DWORD ACE_WFMO_Reactor_Handler_Repository::max_handlep1_
protected

A count of the number of active handles.

size_t ACE_WFMO_Reactor_Handler_Repository::max_size_
protected

Maximum number of handles.

size_t ACE_WFMO_Reactor_Handler_Repository::suspended_handles_
protected

Number of currently suspended handles.

To_Be_Added_Info* ACE_WFMO_Reactor_Handler_Repository::to_be_added_info_
protected

Information for entries to be added.

ACE_WFMO_Reactor& ACE_WFMO_Reactor_Handler_Repository::wfmo_reactor_
protected

Reference to our <WFMO_Reactor>.


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