| libASSA Programmer's Manual | ||
|---|---|---|
| <<< Previous | Chapter 2. Writing Network Applications | Next >>> |
Class Reactor defines two member functions for processing event loop:
class Reactor {
public:
void waitForEvents (void);
void waitForEvents (TimeVal* tv_);
void stopReactor (void);
// other methods ...
};
|
The first method with no arguments will block forever, processing data until stopReactor() method is called to terminate Reactor event loop. For example, one possible way of writing GenServer-based Reactor-only application event loop:
Example 2-10. Reactor Event Loop
class Foo : public GenServer, public Singleton<Foo>
{
public:
void processServer ()
{
while (!stopServer ())
{
m_reactor.waitForEvents ();
}
m_reactor.stopReactor ();
}
// other methods ...
};
|
See Example 1-5 for another example.
The second method allows to process events with timeout. It is used mostly for cooperative work with some other event loops in your program (such as Gtk+ or Xt library event loop). See Section 1.7 for further details.
| <<< Previous | Home | Next >>> |
| I/O Multiplexing with Reactor | Up | Implementing Communication Protocols |