E-MailRelay
|
An abstract base class for a singleton that keeps track of open sockets and their associated handlers. More...
#include <geventloop.h>
Public Member Functions | |
virtual | ~EventLoop () |
Destructor. More... | |
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 (const 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 &, EventState)=0 |
Adds the given event source descriptor and associated handler to the read list. More... | |
virtual void | addWrite (Descriptor fd, EventHandler &, EventState)=0 |
Adds the given event source descriptor and associated handler to the write list. More... | |
virtual void | addOther (Descriptor fd, EventHandler &, EventState)=0 |
Adds the given event source descriptor and associated handler to the exception list. More... | |
virtual void | dropRead (Descriptor fd) noexcept=0 |
Removes the given event descriptor from the list of read sources. More... | |
virtual void | dropWrite (Descriptor fd) noexcept=0 |
Removes the given event descriptor from the list of write sources. More... | |
virtual void | dropOther (Descriptor fd) noexcept=0 |
Removes the given event descriptor from the list of other-event sources. More... | |
virtual void | drop (Descriptor fd) noexcept=0 |
Removes the given event descriptor from the event loop as the EventHandler is being destructed. | |
virtual void | disarm (ExceptionHandler *) noexcept=0 |
Used to prevent the given interface from being used, typically called from the ExceptionHandler destructor. | |
EventLoop (const EventLoop &)=delete | |
EventLoop (EventLoop &&)=delete | |
EventLoop & | operator= (const EventLoop &)=delete |
EventLoop & | operator= (EventLoop &&)=delete |
Static Public Member Functions | |
static std::unique_ptr< 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 EventLoop * | ptr () noexcept |
Returns a pointer to an instance of the class, if any. More... | |
static bool | exists () |
Returns true if an instance exists. More... | |
static void | stop (const G::SignalSafe &) |
Calls quit() on instance(). More... | |
Protected Member Functions | |
EventLoop () | |
Constructor. More... | |
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.
Definition at line 62 of file geventloop.h.
|
protected |
Constructor.
Definition at line 28 of file geventloop.cpp.
|
virtual |
Destructor.
Definition at line 34 of file geventloop.cpp.
|
pure virtual |
Adds the given event source descriptor and associated handler to the exception list.
See also Socket::addOtherHandler().
|
pure virtual |
Adds the given event source descriptor and associated handler to the read list.
See also Socket::addReadHandler().
|
pure virtual |
Adds the given event source descriptor and associated handler to the write list.
See also Socket::addWriteHandler().
|
static |
A factory method which creates an instance of a derived class on the heap.
Throws on error.
Definition at line 108 of file geventloop_epoll.cpp.
|
pure virtualnoexcept |
Removes the given event descriptor from the list of other-event sources.
See also Socket::dropOtherHandler().
|
pure virtualnoexcept |
Removes the given event descriptor from the list of read sources.
See also Socket::dropReadHandler().
|
pure virtualnoexcept |
Removes the given event descriptor from the list of write sources.
See also Socket::dropWriteHandler().
|
static |
Returns true if an instance exists.
Definition at line 52 of file geventloop.cpp.
|
static |
Returns a reference to an instance of the class, if any.
Throws if none. Does not do any instantiation itself.
Definition at line 45 of file geventloop.cpp.
|
staticnoexcept |
Returns a pointer to an instance of the class, if any.
Returns the null pointer if none.
Definition at line 40 of file geventloop.cpp.
|
pure virtual |
|
pure virtual |
Runs the main event loop.
Returns a quit() reason, if any.
|
static |
Calls quit() on instance().
Definition at line 58 of file geventloop.cpp.