ACE  6.2.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Friends | List of all members
ACE_Select_Reactor_Impl Class Referenceabstract

This class simply defines how Select_Reactor's basic interface functions should look like and provides a common base class for Select_Reactor using various locking mechanism. More...

#include <Select_Reactor_Base.h>

Inheritance diagram for ACE_Select_Reactor_Impl:
Inheritance graph
[legend]
Collaboration diagram for ACE_Select_Reactor_Impl:
Collaboration graph
[legend]

Public Types

enum  { DEFAULT_SIZE = ACE_DEFAULT_SELECT_REACTOR_SIZE }
 

Public Member Functions

 ACE_Select_Reactor_Impl (bool mask_signals=true)
 Constructor. More...
 
virtual int purge_pending_notifications (ACE_Event_Handler *=0, ACE_Reactor_Mask=ACE_Event_Handler::ALL_EVENTS_MASK)
 
virtual int resumable_handler (void)
 
- Public Member Functions inherited from ACE_Reactor_Impl
virtual ~ACE_Reactor_Impl (void)
 Close down and release all resources. More...
 
virtual int open (size_t size, bool restart=false, ACE_Sig_Handler *=0, ACE_Timer_Queue *=0, int disable_notify_pipe=0, ACE_Reactor_Notify *=0)=0
 Initialization. More...
 
virtual int current_info (ACE_HANDLE, size_t &)=0
 
virtual int set_sig_handler (ACE_Sig_Handler *signal_handler)=0
 Use a user specified signal handler instead. More...
 
virtual int timer_queue (ACE_Timer_Queue *tq)=0
 Set a user-specified timer queue. More...
 
virtual ACE_Timer_Queuetimer_queue (void) const =0
 Return the current ACE_Timer_Queue. More...
 
virtual int close (void)=0
 Close down and release all resources. More...
 
virtual int work_pending (const ACE_Time_Value &max_wait_time=ACE_Time_Value::zero)=0
 
virtual int handle_events (ACE_Time_Value *max_wait_time=0)=0
 
virtual int alertable_handle_events (ACE_Time_Value *max_wait_time=0)=0
 
virtual int handle_events (ACE_Time_Value &max_wait_time)=0
 
virtual int alertable_handle_events (ACE_Time_Value &max_wait_time)=0
 
virtual int deactivated (void)=0
 
virtual void deactivate (int do_stop)=0
 
virtual int register_handler (ACE_Event_Handler *event_handler, ACE_Reactor_Mask mask)=0
 
virtual int register_handler (ACE_HANDLE io_handle, ACE_Event_Handler *event_handler, ACE_Reactor_Mask mask)=0
 
virtual int register_handler (ACE_Event_Handler *event_handler, ACE_HANDLE event_handle=ACE_INVALID_HANDLE)=0
 
virtual int register_handler (ACE_HANDLE event_handle, ACE_HANDLE io_handle, ACE_Event_Handler *event_handler, ACE_Reactor_Mask mask)=0
 
virtual int register_handler (const ACE_Handle_Set &handles, ACE_Event_Handler *event_handler, ACE_Reactor_Mask mask)=0
 Register event_handler with all the handles in the <Handle_Set>. More...
 
virtual int register_handler (int signum, ACE_Event_Handler *new_sh, ACE_Sig_Action *new_disp=0, ACE_Event_Handler **old_sh=0, ACE_Sig_Action *old_disp=0)=0
 
virtual int register_handler (const ACE_Sig_Set &sigset, ACE_Event_Handler *new_sh, ACE_Sig_Action *new_disp=0)=0
 
virtual int remove_handler (ACE_Event_Handler *event_handler, ACE_Reactor_Mask mask)=0
 
virtual int remove_handler (ACE_HANDLE handle, ACE_Reactor_Mask mask)=0
 
virtual int remove_handler (const ACE_Handle_Set &handle_set, ACE_Reactor_Mask mask)=0
 
virtual int remove_handler (int signum, ACE_Sig_Action *new_disp, ACE_Sig_Action *old_disp=0, int sigkey=-1)=0
 
virtual int remove_handler (const ACE_Sig_Set &sigset)=0
 Calls <remove_handler> for every signal in sigset. More...
 
virtual int suspend_handler (ACE_Event_Handler *event_handler)=0
 
virtual int suspend_handler (ACE_HANDLE handle)=0
 Suspend handle temporarily. More...
 
virtual int suspend_handler (const ACE_Handle_Set &handles)=0
 Suspend all handles in handle set temporarily. More...
 
virtual int suspend_handlers (void)=0
 Suspend all <handles> temporarily. More...
 
virtual int resume_handler (ACE_Event_Handler *event_handler)=0
 
virtual int resume_handler (ACE_HANDLE handle)=0
 Resume handle. More...
 
virtual int resume_handler (const ACE_Handle_Set &handles)=0
 Resume all handles in handle set. More...
 
virtual int resume_handlers (void)=0
 Resume all <handles>. More...
 
virtual bool uses_event_associations (void)=0
 
virtual long schedule_timer (ACE_Event_Handler *event_handler, const void *arg, const ACE_Time_Value &delay, const ACE_Time_Value &interval=ACE_Time_Value::zero)=0
 
virtual int reset_timer_interval (long timer_id, const ACE_Time_Value &interval)=0
 
virtual int cancel_timer (ACE_Event_Handler *event_handler, int dont_call_handle_close=1)=0
 
virtual int cancel_timer (long timer_id, const void **arg=0, int dont_call_handle_close=1)=0
 
virtual int schedule_wakeup (ACE_Event_Handler *event_handler, ACE_Reactor_Mask masks_to_be_added)=0
 
virtual int schedule_wakeup (ACE_HANDLE handle, ACE_Reactor_Mask masks_to_be_added)=0
 
virtual int cancel_wakeup (ACE_Event_Handler *event_handler, ACE_Reactor_Mask masks_to_be_cleared)=0
 Clear masks_to_be_cleared from the event_handler's entry. More...
 
virtual int cancel_wakeup (ACE_HANDLE handle, ACE_Reactor_Mask masks_to_be_cleared)=0
 Clear masks_to_be_cleared from the handle's entry. More...
 
virtual int notify (ACE_Event_Handler *event_handler=0, ACE_Reactor_Mask mask=ACE_Event_Handler::EXCEPT_MASK, ACE_Time_Value *=0)=0
 
virtual void max_notify_iterations (int)=0
 
virtual int max_notify_iterations (void)=0
 
virtual ACE_Event_Handlerfind_handler (ACE_HANDLE handle)=0
 
virtual int handler (ACE_HANDLE handle, ACE_Reactor_Mask mask, ACE_Event_Handler **event_handler=0)=0
 
virtual int handler (int signum, ACE_Event_Handler **=0)=0
 
virtual bool initialized (void)=0
 
virtual size_t size (void) const =0
 
virtual ACE_Locklock (void)=0
 Returns a reference to the Reactor's internal lock. More...
 
virtual void wakeup_all_threads (void)=0
 Wake up all threads in waiting in the event loop. More...
 
virtual int owner (ACE_thread_t new_owner, ACE_thread_t *old_owner=0)=0
 Transfers ownership of Reactor_Impl to the new_owner. More...
 
virtual int owner (ACE_thread_t *owner)=0
 Return the ID of the "owner" thread. More...
 
virtual bool restart (void)=0
 Get the existing restart value. More...
 
virtual bool restart (bool r)=0
 Set a new value for restart and return the original value. More...
 
virtual void requeue_position (int)=0
 Set position of the owner thread. More...
 
virtual int requeue_position (void)=0
 Get position of the owner thread. More...
 
virtual int mask_ops (ACE_Event_Handler *event_handler, ACE_Reactor_Mask mask, int ops)=0
 
virtual int mask_ops (ACE_HANDLE handle, ACE_Reactor_Mask mask, int ops)=0
 
virtual int ready_ops (ACE_Event_Handler *event_handler, ACE_Reactor_Mask mask, int ops)=0
 
virtual int ready_ops (ACE_HANDLE handle, ACE_Reactor_Mask, int ops)=0
 GET/SET/ADD/CLR the ready "bit" bound with the handle and mask. More...
 
virtual void dump (void) const =0
 Dump the state of an object. More...
 

Protected Member Functions

virtual int bit_ops (ACE_HANDLE handle, ACE_Reactor_Mask mask, ACE_Select_Reactor_Handle_Set &handle_set, int ops)
 Allow manipulation of the <wait_set_> mask and <ready_set_> mask. More...
 
virtual void renew (void)=0
 
virtual int is_suspended_i (ACE_HANDLE handle)=0
 
virtual void clear_dispatch_mask (ACE_HANDLE handle, ACE_Reactor_Mask mask)
 
int supress_notify_renew (void)
 
void supress_notify_renew (int sr)
 

Protected Attributes

ACE_Select_Reactor_Handler_Repository handler_rep_
 Table that maps <ACE_HANDLEs> to <ACE_Event_Handler *>'s. More...
 
ACE_Select_Reactor_Handle_Set dispatch_set_
 Tracks handles that are ready for dispatch from <select> More...
 
ACE_Select_Reactor_Handle_Set wait_set_
 Tracks handles that are waited for by <select>. More...
 
ACE_Select_Reactor_Handle_Set suspend_set_
 Tracks handles that are currently suspended. More...
 
ACE_Select_Reactor_Handle_Set ready_set_
 
ACE_Timer_Queuetimer_queue_
 Defined as a pointer to allow overriding by derived classes... More...
 
ACE_Sig_Handlersignal_handler_
 Handle signals without requiring global/static variables. More...
 
ACE_Reactor_Notifynotify_handler_
 
bool delete_timer_queue_
 
bool delete_signal_handler_
 
bool delete_notify_handler_
 
bool initialized_
 True if we've been initialized yet... More...
 
bool restart_
 
int requeue_position_
 
ACE_thread_t owner_
 The original thread that created this Select_Reactor. More...
 
bool state_changed_
 
bool mask_signals_
 

Private Member Functions

 ACE_Select_Reactor_Impl (const ACE_Select_Reactor_Impl &)
 Deny access since member-wise won't work... More...
 
ACE_Select_Reactor_Imploperator= (const ACE_Select_Reactor_Impl &)
 

Private Attributes

int supress_renew_
 

Friends

class ACE_Select_Reactor_Notify
 
class ACE_Select_Reactor_Handler_Repository
 

Additional Inherited Members

- Public Attributes inherited from ACE_Reactor_Impl
 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks. More...
 

Detailed Description

This class simply defines how Select_Reactor's basic interface functions should look like and provides a common base class for Select_Reactor using various locking mechanism.

Member Enumeration Documentation

anonymous enum
Enumerator
DEFAULT_SIZE 

Default size of the Select_Reactor's handle table.

Constructor & Destructor Documentation

ACE_Select_Reactor_Impl::ACE_Select_Reactor_Impl ( bool  mask_signals = true)
inline

Constructor.

ACE_Select_Reactor_Impl::ACE_Select_Reactor_Impl ( const ACE_Select_Reactor_Impl )
private

Deny access since member-wise won't work...

Member Function Documentation

int ACE_Select_Reactor_Impl::bit_ops ( ACE_HANDLE  handle,
ACE_Reactor_Mask  mask,
ACE_Select_Reactor_Handle_Set handle_set,
int  ops 
)
protectedvirtual

Allow manipulation of the <wait_set_> mask and <ready_set_> mask.

void ACE_Select_Reactor_Impl::clear_dispatch_mask ( ACE_HANDLE  handle,
ACE_Reactor_Mask  mask 
)
protectedvirtual

When register/unregister occur, then we need to re-eval our wait/suspend/dispatch set.

Reimplemented in ACE_TP_Reactor.

virtual int ACE_Select_Reactor_Impl::is_suspended_i ( ACE_HANDLE  handle)
protectedpure virtual

Check to see if the Event_Handler associated with handle is suspended. Returns 0 if not, 1 if so.

Implemented in ACE_Select_Reactor_T< ACE_SELECT_REACTOR_TOKEN >, and ACE_Select_Reactor_T< ACE_Select_Reactor_Token >.

ACE_Select_Reactor_Impl& ACE_Select_Reactor_Impl::operator= ( const ACE_Select_Reactor_Impl )
private
int ACE_Select_Reactor_Impl::purge_pending_notifications ( ACE_Event_Handler eh = 0,
ACE_Reactor_Mask  mask = ACE_Event_Handler::ALL_EVENTS_MASK 
)
virtual

Purge any notifications pending in this reactor for the specified ACE_Event_Handler object. Returns the number of notifications purged. Returns -1 on error.

Implements ACE_Reactor_Impl.

virtual void ACE_Select_Reactor_Impl::renew ( void  )
protectedpure virtual

Enqueue ourselves into the list of waiting threads at the appropriate point specified by <requeue_position_>.

Implemented in ACE_Select_Reactor_T< ACE_SELECT_REACTOR_TOKEN >, and ACE_Select_Reactor_T< ACE_Select_Reactor_Token >.

int ACE_Select_Reactor_Impl::resumable_handler ( void  )
virtual

Does the reactor allow the application to resume the handle on its own ie. can it pass on the control of handle resumption to the application. The select reactor has no handlers that can be resumed by the application. So return 0;

Implements ACE_Reactor_Impl.

Reimplemented in ACE_TP_Reactor.

int ACE_Select_Reactor_Impl::supress_notify_renew ( void  )
inlineprotected

Controls/access whether the notify handler should renew the Select_Reactor's token or not.

void ACE_Select_Reactor_Impl::supress_notify_renew ( int  sr)
inlineprotected

Friends And Related Function Documentation

friend class ACE_Select_Reactor_Notify
friend

Member Data Documentation

bool ACE_Select_Reactor_Impl::delete_notify_handler_
protected

Keeps track of whether we need to delete the notify handler (if we didn't create it, then we don't delete it).

bool ACE_Select_Reactor_Impl::delete_signal_handler_
protected

Keeps track of whether we should delete the signal handler (if we didn't create it, then we don't delete it).

bool ACE_Select_Reactor_Impl::delete_timer_queue_
protected

Keeps track of whether we should delete the timer queue (if we didn't create it, then we don't delete it).

ACE_Select_Reactor_Handle_Set ACE_Select_Reactor_Impl::dispatch_set_
protected

Tracks handles that are ready for dispatch from <select>

ACE_Select_Reactor_Handler_Repository ACE_Select_Reactor_Impl::handler_rep_
protected

Table that maps <ACE_HANDLEs> to <ACE_Event_Handler *>'s.

bool ACE_Select_Reactor_Impl::initialized_
protected

True if we've been initialized yet...

bool ACE_Select_Reactor_Impl::mask_signals_
protected

If false then the Reactor will not mask the signals during the event dispatching. This is useful for applications that do not register any signal handlers and want to reduce the overhead introduce by the kernel level locks required to change the mask.

ACE_Reactor_Notify* ACE_Select_Reactor_Impl::notify_handler_
protected

Callback object that unblocks the ACE_Select_Reactor if it's sleeping.

ACE_thread_t ACE_Select_Reactor_Impl::owner_
protected

The original thread that created this Select_Reactor.

ACE_Select_Reactor_Handle_Set ACE_Select_Reactor_Impl::ready_set_
protected

Track HANDLES we are interested in for various events that must be dispatched without going through <select>.

int ACE_Select_Reactor_Impl::requeue_position_
protected

Position that the main ACE_Select_Reactor thread is requeued in the list of waiters during a <notify> callback. If this value == -1 we are requeued at the end of the list. Else if it's 0 then we are requeued at the front of the list. Else if it's > 1 then that indicates the number of waiters to skip over.

bool ACE_Select_Reactor_Impl::restart_
protected

Restart the <handle_events> event-loop method automatically when <select> is interrupted via <EINTR>.

ACE_Sig_Handler* ACE_Select_Reactor_Impl::signal_handler_
protected

Handle signals without requiring global/static variables.

bool ACE_Select_Reactor_Impl::state_changed_
protected

True if state has changed during dispatching of ACE_Event_Handlers, else false. This is used to determine whether we need to make another trip through the <Select_Reactor>'s <wait_for_multiple_events> loop.

int ACE_Select_Reactor_Impl::supress_renew_
private

Determine whether we should renew Select_Reactor's token after handling the notification message.

ACE_Select_Reactor_Handle_Set ACE_Select_Reactor_Impl::suspend_set_
protected

Tracks handles that are currently suspended.

ACE_Timer_Queue* ACE_Select_Reactor_Impl::timer_queue_
protected

Defined as a pointer to allow overriding by derived classes...

ACE_Select_Reactor_Handle_Set ACE_Select_Reactor_Impl::wait_set_
protected

Tracks handles that are waited for by <select>.


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