Description and design of the Asynch proactor interface.
The AsynchProactor is supposed to be a low level event multiplexing scheme to use together with asynchrounous sockets.
For more information on the proactor pattern. See Pattern Oriented Software Architecture by Schmidt et al. (see http://www.cs.wustl.edu/~schmidt/POSA/)
// attach AsynchSocket to this (a base will not be removed from the queue until close of socket or queue) // should we take AsynchSocket::socket_t instead? bool attach(AsynchSocket& socket);
// add a timer callback (returning a new duration when to fire again or duration = 0 if not to fire again) bool set_timer(time_duration_t fireTime, boost::function<time_duration_t ()>);
// dispatch an event from "queue" returns true if event is dispatched and false // on timeout. bool dispatch(time_duration_t);
Do we need to close a proactor and can these operations be implemented safely.
// perform asynchrounous close. void close(); // join this proactor and wait for close to finish void join();
How should destruction be handled and defined?