SYNOPSIS

#include <Dispatch/iocallback.h>

DESCRIPTION

For convenience, the macros defined in iocallback.h allow the user to define an iohandler which does nothing more than call an arbitrary object's member function. The actual code to read data from a file descriptor, write data to a file descriptor, handle an I/O exception on a file descriptor, or handle a timer's expiration can reside in any arbitrary class rather than in the iohandler.

MACROS

declareIOCallback(T)

Declare an iocallback type for the given class type T.

implementIOCallback(T)

Emit code at this point to implement the iocallback's member functions.

IOCallback(T)* instance = new IOCallback(T)(...)

Define an instance of the iocallback type for the given class type T.

CONSTRUCTORS

typedef int T::IOReady(T)(int fd)

typedef void T::IOTimer(T)(long sec, long usec)

IOCallback(T)(T*, IOReady(T)* in, IOReady(T)* out = nil, IOReady(T)* ex = nil)

IOCallback(T)(T*, IOTimer(T)*, IOReady(T)* in = nil, IOReady(T)* out = nil, IOReady(T)* ex = nil)

Construct an instance of the iocallback type that will call the given member functions of the given class type T's instance. Note that you do not have to use the IOReady(T) or IOTimer(T) macros; rather, you only have to pass the address of a T member function, such as &T::inputReady.

RELATED TO IOCallback…

Dispatcher(3I), IOHandler(3I)