Dispatcher  -  wait  on  multiple file descriptors until a
       condition occurs


SYNOPSIS

       #include <Dispatch/dispatcher.h>


DESCRIPTION

       Conceptually, the dispatcher plays the role  of  detecting
       new  data on multiple input file descriptors and dispatch-
       ing the data to  the  appropriate  iohandlers.   The  dis-
       patcher also notifies iohandlers of expired timers.  Noti-
       fication of either an I/O condition or  an  expired  timer
       occurs by calling one of the iohandler's virtual functions
       (see IOHandler(3I)).   Since  a  program  needs  only  one
       instance  of  Dispatcher, a static member function is pro-
       vided to create that instance if necessary and return  it.


PUBLIC OPERATIONS

       enum DispatcherMask { ReadMask, WriteMask, ExceptMask }
       virtual IOHandler* handler(int fd, DispatcherMask)
       virtual void link(int fd, DispatcherMask, IOHandler*)
       virtual void unlink(int fd)
              Return  a  file descriptor's iohandler, link a file
              descriptor  to  an  iohandler,  or  unlink  a  file
              descriptor from its iohandlers.  The DispatcherMask
              describes the I/O condition that the  iohandler  is
              interested  in, such as whether the file descriptor
              has new data available for  reading.   If  the  I/O
              condition occurs, the iohandler will be expected to
              read data from the file descriptor, write  data  to
              the   file  descriptor,  or  handle  the  exception
              depending on the I/O condition.

       virtual void startTimer(long sec, long usec, IOHandler*)
       virtual void stopTimer(IOHandler*)
              Attach an iohandler to a timer or  remove  a  timer
              before it expires.  A timer expires after the given
              number of seconds and  microseconds  have  elapsed.
              If  a timer expires, the dispatcher will notify the
              attached iohandler.  Timers will not  expire  until
              the   program   calls   either   variant   of  Dis-
              patcher::dispatch.

       virtual void dispatch()
       virtual boolean dispatch(long& sec, long& usec)
              With no arguments, block indefinitely until an  I/O
              condition occurs or a timer expires and then notify
              the attached iohandler.  With two arguments,  block
              no  longer  than  the  given  number of seconds and
              microseconds.  If both numbers are zero, the  func-
              tion  will  return  immediately  after checking all
              file descriptors and timers.  The return value will
              timer  expired  or it exceeded the given poll time.
              The function will decrease the given poll  time  by
              the amount of time it spent blocking.

       static Dispatcher& instance()
       static void instance(Dispatcher*)
              With no arguments, create an instance of Dispatcher
              if it doesn't already exist and return it.  With an
              argument,  set the instance of Dispatcher that will
              be used throughout the program.


SEE ALSO

       select(2), IOHandler(3I)








































Man(1) output converted with man2html