E-MailRelay

- Main Page
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
GNet::EventLoop Class Referenceabstract

An abstract base class for a singleton that keeps track of open sockets and their associated handlers. More...

`#include <geventloop.h>`

Inheritance diagram for GNet::EventLoop:

## Classes
struct | Running
| RAII class that sets a boolean, for implementations of run()/running(). More...

## Public Member Functions
virtual | ~EventLoop ()
| Destructor.
virtual std::string | run ()=0
| Runs the main event loop. More...
virtual bool | running () const =0
| Returns true if called from within run().
virtual void | quit (std::string reason)=0
| Causes run() to return (once the call stack has unwound). More...
virtual void | quit (const G::SignalSafe &)=0
| A signal-safe overload to quit() the event loop.
virtual void | addRead (Descriptor fd, EventHandler &, ExceptionHandler &)=0
| Adds the given event source descriptor and associated handler to the read list. More...
virtual void | addWrite (Descriptor fd, EventHandler &, ExceptionHandler &)=0
| Adds the given event source descriptor and associated handler to the write list. More...
virtual void | addOther (Descriptor fd, EventHandler &, ExceptionHandler &)=0
| Adds the given event source descriptor and associated handler to the exception list. More...
virtual void | dropRead (Descriptor fd)=0
| Removes the given event source descriptor from the list of read sources. More...
virtual void | dropWrite (Descriptor fd)=0
| Removes the given event source descriptor from the list of write sources. More...
virtual void | dropOther (Descriptor fd)=0
| Removes the given event source descriptor from the list of exception sources. More...
virtual void | setTimeout (G::EpochTime t)=0
| Used by GNet::TimerList. More...
virtual std::string | report () const =0
| Returns a line of text reporting the status of the event loop. More...
virtual void | disarm (ExceptionHandler *)=0
| Used to prevent the given interface from being used, typically called from the ExceptionHandler destructor. More...
virtual void | onException (std::exception &) override
| Override from ExceptionHandler that just rethrows the current exception. More...

## Static Public Member Functions
static EventLoop * | create ()
| A factory method which creates an instance of a derived class on the heap. More...
static EventLoop & | instance ()
| Returns a reference to an instance of the class, if any. More...
static bool | exists ()
| Returns true if an instance exists.
static void | stop (const G::SignalSafe &)
| Calls quit() on instance().

## Protected Member Functions
| EventLoop ()
| Constructor.
Protected Member Functions inherited from GNet::ExceptionHandler
virtual | ~ExceptionHandler ()
| Destructor.

## Detailed Description

An abstract base class for a singleton that keeps track of open sockets and their associated handlers.

Derived classes are used to implement different event loops, such as select() or WaitForMultipleObjects().

In practice sockets should be added and removed from the class by calling GNet::Socket::addReadHandler() and friends rather than by calling EventLoop::addRead() etc. so that the event handle is passed correctly when running on windows.

The class has a static member for finding an instance, but instances are not created automatically.

As a convenience the event loop is also an ExceptionHandler that does a rethrow.

Definition at line 54 of file geventloop.h.

## Member Function Documentation

virtual void GNet::EventLoop::addOther | ( | Descriptor | fd,
|  | EventHandler & | ,
|  | ExceptionHandler & |
| ) |  |
| pure virtual

Adds the given event source descriptor and associated handler to the exception list.

See also Socket::addOtherHandler().

virtual void GNet::EventLoop::addRead | ( | Descriptor | fd,
|  | EventHandler & | ,
|  | ExceptionHandler & |
| ) |  |
| pure virtual

Adds the given event source descriptor and associated handler to the read list.

See also Socket::addReadHandler().

virtual void GNet::EventLoop::addWrite | ( | Descriptor | fd,
|  | EventHandler & | ,
|  | ExceptionHandler & |
| ) |  |
| pure virtual

Adds the given event source descriptor and associated handler to the write list.

See also Socket::addWriteHandler().

static EventLoop* GNet::EventLoop::create | ( |  | ) |
| static

A factory method which creates an instance of a derived class on the heap.

Throws on error.

virtual void GNet::EventLoop::disarm | ( | ExceptionHandler * |  | ) |
| pure virtual

Used to prevent the given interface from being used, typically called from the ExceptionHandler destructor.

virtual void GNet::EventLoop::dropOther | ( | Descriptor | fd | ) |
| pure virtual

Removes the given event source descriptor from the list of exception sources.

See also Socket::dropOtherHandler().

virtual void GNet::EventLoop::dropRead | ( | Descriptor | fd | ) |
| pure virtual

Removes the given event source descriptor from the list of read sources.

See also Socket::dropReadHandler().

virtual void GNet::EventLoop::dropWrite | ( | Descriptor | fd | ) |
| pure virtual

Removes the given event source descriptor from the list of write sources.

See also Socket::dropWriteHandler().

GNet::EventLoop & GNet::EventLoop::instance | ( |  | ) |
| static

Returns a reference to an instance of the class, if any.

Throws if none. Does not do any instantiation itself.

Definition at line 42 of file geventloop.cpp.

void GNet::EventLoop::onException | ( | std::exception & |  | ) |
| override virtual

Override from ExceptionHandler that just rethrows the current exception.

Implements GNet::ExceptionHandler.

Definition at line 61 of file geventloop.cpp.

virtual void GNet::EventLoop::quit | ( | std::string | reason | ) |
| pure virtual

Causes run() to return (once the call stack has unwound).

If there are multiple quit()s before run() returns then the latest reason is used.

virtual std::string GNet::EventLoop::report | ( |  | ) | const
| pure virtual

Returns a line of text reporting the status of the event loop.

Used in debugging and diagnostics.

virtual std::string GNet::EventLoop::run | ( |  | ) |
| pure virtual

Runs the main event loop.

Returns a quit() reason, if any.

virtual void GNet::EventLoop::setTimeout | ( | G::EpochTime | t | ) |
| pure virtual

Used by GNet::TimerList.

Sets the absolute time at which TimerList::doTimeouts() is to be called. A zero time is used if there are no active timers.

The documentation for this class was generated from the following files:

- /tmp/slackrepo/SBo/slackrepo.S3SYfd/build_emailrelay/emailrelay-2.0.1/src/gnet/geventloop.h
- /tmp/slackrepo/SBo/slackrepo.S3SYfd/build_emailrelay/emailrelay-2.0.1/src/gnet/geventloop.cpp