Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

ACE_Dev_Poll_Reactor_Notify Class Reference

Event handler used for unblocking the ACE_Dev_Poll_Reactor from its event loop. More...

#include <Dev_Poll_Reactor.h>

Inheritance diagram for ACE_Dev_Poll_Reactor_Notify:

Inheritance graph
[legend]
Collaboration diagram for ACE_Dev_Poll_Reactor_Notify:

Collaboration graph
[legend]
List of all members.

Public Methods

 ACE_Dev_Poll_Reactor_Notify (void)
 Constructor. More...

virtual int open (ACE_Reactor_Impl *, ACE_Timer_Queue *timer_queue=0, int disable_notify=0)
virtual int close (void)
virtual ssize_t notify (ACE_Event_Handler *=0, ACE_Reactor_Mask=ACE_Event_Handler::EXCEPT_MASK, ACE_Time_Value *=0)
virtual int dispatch_notifications (int &number_of_active_handles, ACE_Handle_Set &rd_mask)
 Unimplemented method required by pure virtual method in abstract base class. More...

virtual ACE_HANDLE notify_handle (void)
 Returns the ACE_HANDLE of the notify pipe on which the reactor is listening for notifications so that other threads can unblock the Reactor_Impl. More...

virtual int is_dispatchable (ACE_Notification_Buffer &buffer)
 Verify whether the buffer has dispatchable info or not. More...

virtual int dispatch_notify (ACE_Notification_Buffer &buffer)
 Handle one of the notify call on the handle. This could be because of a thread trying to unblock the Reactor_Impl. More...

virtual int read_notify_pipe (ACE_HANDLE handle, ACE_Notification_Buffer &buffer)
 Read one of the notify call on the handle into the buffer. This could be because of a thread trying to unblock the Reactor_Impl. More...

virtual int handle_input (ACE_HANDLE handle)
 Called back by the ACE_Dev_Poll_Reactor when a thread wants to unblock us. More...

virtual void max_notify_iterations (int)
virtual int max_notify_iterations (void)
virtual int purge_pending_notifications (ACE_Event_Handler *=0, ACE_Reactor_Mask=ACE_Event_Handler::ALL_EVENTS_MASK)
virtual void dump (void) const
 Dump the state of an object. More...


Protected Attributes

ACE_Dev_Poll_Reactordp_reactor_
ACE_Pipe notification_pipe_
int max_notify_iterations_

Detailed Description

Event handler used for unblocking the ACE_Dev_Poll_Reactor from its event loop.

This event handler is used internally by the ACE_Dev_Poll_Reactor as a means to allow a thread other then the one running the event loop to unblock the event loop.


Constructor & Destructor Documentation

ACE_Dev_Poll_Reactor_Notify::ACE_Dev_Poll_Reactor_Notify void   
 

Constructor.


Member Function Documentation

int ACE_Dev_Poll_Reactor_Notify::close void    [virtual]
 

Reimplemented from ACE_Reactor_Notify.

int ACE_Dev_Poll_Reactor_Notify::dispatch_notifications int &    number_of_active_handles,
ACE_Handle_Set   rd_mask
[virtual]
 

Unimplemented method required by pure virtual method in abstract base class.

This method's interface is not very compatibile with this Reactor's design. It's not clear why this method is pure virtual either.

Reimplemented from ACE_Reactor_Notify.

int ACE_Dev_Poll_Reactor_Notify::dispatch_notify ACE_Notification_Buffer   buffer [virtual]
 

Handle one of the notify call on the handle. This could be because of a thread trying to unblock the Reactor_Impl.

Reimplemented from ACE_Reactor_Notify.

void ACE_Dev_Poll_Reactor_Notify::dump void    const [virtual]
 

Dump the state of an object.

Reimplemented from ACE_Reactor_Notify.

int ACE_Dev_Poll_Reactor_Notify::handle_input ACE_HANDLE    handle [virtual]
 

Called back by the ACE_Dev_Poll_Reactor when a thread wants to unblock us.

Reimplemented from ACE_Event_Handler.

int ACE_Dev_Poll_Reactor_Notify::is_dispatchable ACE_Notification_Buffer   buffer [virtual]
 

Verify whether the buffer has dispatchable info or not.

Reimplemented from ACE_Reactor_Notify.

int ACE_Dev_Poll_Reactor_Notify::max_notify_iterations void    [virtual]
 

Get the maximum number of times that the handle_input method will iterate and dispatch the ACE_Event_Handlers that are passed in via the notify queue before breaking out of its event loop.

Reimplemented from ACE_Reactor_Notify.

void ACE_Dev_Poll_Reactor_Notify::max_notify_iterations int    iterations [virtual]
 

Set the maximum number of times that the handle_input method will iterate and dispatch the ACE_Event_Handlers that are passed in via the notify queue before breaking out of the event loop. By default, this is set to -1, which means "iterate until the queue is empty." Setting this to a value like "1 or 2" will increase "fairness" (and thus prevent starvation) at the expense of slightly higher dispatching overhead.

Reimplemented from ACE_Reactor_Notify.

ssize_t ACE_Dev_Poll_Reactor_Notify::notify ACE_Event_Handler   eh = 0,
ACE_Reactor_Mask    mask = ACE_Event_Handler::EXCEPT_MASK,
ACE_Time_Value   timeout = 0
[virtual]
 

Called by a thread when it wants to unblock the Reactor_Impl. This wakeups the Reactor_Impl if currently blocked. Pass over both the Event_Handler *and* the mask to allow the caller to dictate which Event_Handler method the Reactor_Impl will invoke. The ACE_Time_Value indicates how long to blocking trying to notify the Reactor_Impl. If timeout == 0, the caller will block until action is possible, else will wait until the relative time specified in *timeout elapses).

Reimplemented from ACE_Reactor_Notify.

ACE_HANDLE ACE_Dev_Poll_Reactor_Notify::notify_handle void    [virtual]
 

Returns the ACE_HANDLE of the notify pipe on which the reactor is listening for notifications so that other threads can unblock the Reactor_Impl.

Reimplemented from ACE_Reactor_Notify.

int ACE_Dev_Poll_Reactor_Notify::open ACE_Reactor_Impl   r,
ACE_Timer_Queue   timer_queue = 0,
int    disable_notify_pipe = 0
[virtual]
 

Reimplemented from ACE_Reactor_Notify.

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

Reimplemented from ACE_Reactor_Notify.

int ACE_Dev_Poll_Reactor_Notify::read_notify_pipe ACE_HANDLE    handle,
ACE_Notification_Buffer   buffer
[virtual]
 

Read one of the notify call on the handle into the buffer. This could be because of a thread trying to unblock the Reactor_Impl.

Reimplemented from ACE_Reactor_Notify.


Member Data Documentation

ACE_Dev_Poll_Reactor* ACE_Dev_Poll_Reactor_Notify::dp_reactor_ [protected]
 

Keep a back pointer to the ACE_Dev_Poll_Reactor. If this value if NULL then the ACE_Dev_Poll_Reactor has been initialized with disable_notify_pipe.

int ACE_Dev_Poll_Reactor_Notify::max_notify_iterations_ [protected]
 

Keeps track of the maximum number of times that the ACE_Dev_Poll_Reactor_Notify::handle_input method will iterate and dispatch the ACE_Event_Handlers that are passed in via the notify pipe before breaking out of its recv loop. By default, this is set to -1, which means "iterate until the pipe is empty."

ACE_Pipe ACE_Dev_Poll_Reactor_Notify::notification_pipe_ [protected]
 

Contains the ACE_HANDLE the ACE_Dev_Poll_Reactor is listening on, as well as the ACE_HANDLE that threads wanting the attention of the ACE_Dev_Poll_Reactor will write to.


The documentation for this class was generated from the following files:
Generated on Wed Dec 25 18:52:09 2002 for ACE by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001