Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

dispatcher(3i) [debian man page]

Dispatcher(3I)						    InterViews Reference Manual 					    Dispatcher(3I)

NAME
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 dispatching the data to the appro- priate iohandlers. The dispatcher also notifies iohandlers of expired timers. Notification 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 provided 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 microsec- onds have elapsed. If a timer expires, the dispatcher will notify the attached iohandler. Timers will not expire until the program calls either variant of Dispatcher::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 function will return immediately after checking all file descriptors and timers. The return value will be true if an I/O condition caused the function to return and false if the function returned because a 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) InterViews 21 December 1990 Dispatcher(3I)

Check Out this Related Man Page

IOHandler(3I)						    InterViews Reference Manual 					     IOHandler(3I)

NAME
IOHandler - read input, write output, or handle an I/O exception or timeout SYNOPSIS
#include <Dispatch/iohandler.h> DESCRIPTION
An iohandler reads data from a file descriptor, writes data to a file descriptor, handles an I/O exception on a file descriptor, or handles a timer's expiration. Once the user has requested the dispatcher to attach an iohandler to a file descriptor or a timer, the dispatcher will automatically notify the iohandler when the file descriptor's I/O condition changes or the timer expires. For convenience, the user can use a derived generic class (see IOCallback(3I)) to make the iohandler do nothing more than call an arbitrary object's member function. PUBLIC OPERATIONS
virtual int inputReady(int fd) virtual int outputReady(int fd) virtual int exceptionRaised(int fd) The dispatcher will call one of these functions to notify an iohandler that it can read data from a file descriptor, write data to a file descriptor, or handle an I/O exception on a file descriptor. The iohandler should perform the appropriate action and tell the dispatcher what to do next. A negative return value means that the iohandler encountered an error or it doesn't want to read or write anything more. The dispatcher will unlink the iohandler from its file descriptor automatically. A positive return value means that the iohandler didn't read or write everything that it could have. The dispatcher will call the iohandler again in round robin fashion WITHOUT checking select, which means that the iohandler will be called again as soon as the rest of the iohandlers have performed their actions. A zero return value means that the iohandler finished reading or writing everything it was able to. The dispatcher must check the descriptor's status with the select call before it can call the iohandler again. virtual void timerExpired(long sec, long usec) The dispatcher will call this function to notify an iohandler that a timer has expired. For informational purposes, the parameters give the current time in seconds and microseconds since midnight January 1, 1970. If the iohandler wants to reset the timer, it must tell the dispatcher to start another timer. SEE ALSO
Dispatcher(3I), IOCallback(3I) InterViews 9 January 1991 IOHandler(3I)
Man Page