Rapicorn - Experimental UI Toolkit - Source Code
13.07.0
|
Loop object, polling for events and executing callbacks in accordance. More...
#include <loop.hh>
Inherits Rapicorn::ReferenceCountable.
Inherited by Rapicorn::MainLoop, and Rapicorn::SlaveLoop.
Classes | |
class | DispatcherSource |
EventLoop source for timer execution. More... | |
class | PollFDSource |
EventLoop source for IO callbacks. More... | |
class | Source |
EventLoop source for callback execution. More... | |
struct | State |
class | TimedSource |
EventLoop source for timer execution. More... | |
Public Types | |
typedef std::function< void(void)> | VoidSlot |
typedef std::function< bool(void)> | BoolSlot |
typedef std::function< void(PollFD &)> | VPfdSlot |
typedef std::function< bool(PollFD &)> | BPfdSlot |
typedef std::function< bool(const State &)> | DispatcherSlot |
Public Member Functions | |
void | wakeup () |
Wakeup loop from polling. | |
uint | add (Source *loop_source, int priority=PRIORITY_NORMAL) |
Adds a new source to the loop with custom priority. | |
void | remove (uint id) |
Removes a source from loop, the source must be present. | |
bool | try_remove (uint id) |
Tries to remove a source, returns if successfull. | |
void | kill_sources (void) |
Remove all sources from this loop, prevents all further execution. | |
bool | has_primary (void) |
Indicates whether loop contains primary sources. | |
bool | flag_primary (bool on) |
template<class BoolVoidFunctor > | |
uint | exec_now (BoolVoidFunctor &&bvf) |
Execute a callback as primary source with priority "now" (highest), returning true repeats callback. | |
template<class BoolVoidFunctor > | |
uint | exec_next (BoolVoidFunctor &&bvf) |
Execute a callback with priority "next" (very important), returning true repeats callback. | |
template<class BoolVoidFunctor > | |
uint | exec_notify (BoolVoidFunctor &&bvf) |
Execute a callback with priority "notify" (important, for async callbacks), returning true repeats callback. | |
template<class BoolVoidFunctor > | |
uint | exec_normal (BoolVoidFunctor &&bvf) |
Execute a callback with normal priority (round-robin for all events and requests), returning true repeats callback. | |
template<class BoolVoidFunctor > | |
uint | exec_update (BoolVoidFunctor &&bvf) |
Execute a callback with priority "update" (important idle), returning true repeats callback. | |
template<class BoolVoidFunctor > | |
uint | exec_background (BoolVoidFunctor &&bvf) |
Execute a callback with background priority (when idle), returning true repeats callback. | |
MainLoop * | main_loop () const |
Get the main loop for this loop. | |
uint | exec_dispatcher (const DispatcherSlot &sl, int priority=PRIORITY_NORMAL) |
Execute a single dispatcher callback for prepare, check, dispatch. | |
template<class BoolVoidFunctor > | |
uint | exec_timer (uint timeout_ms, BoolVoidFunctor &&bvf, int priority=PRIORITY_NORMAL) |
Execute a callback after a specified timeout, returning true repeats callback. | |
template<class BoolVoidFunctor > | |
uint | exec_timer (uint initial_timeout_ms, uint repeat_timeout_ms, BoolVoidFunctor &&bvf, int priority=PRIORITY_NORMAL) |
Execute a callback after a specified timeout with adjustable initial timeout, returning true repeats callback. | |
template<class BoolVoidPollFunctor > | |
uint | exec_io_handler (BoolVoidPollFunctor &&bvf, int fd, const String &mode, int priority=PRIORITY_NORMAL) |
Execute a callback after polling for mode on fd, returning true repeats callback. | |
Static Public Attributes | |
static const int | PRIORITY_NOW |
Most important, used for immediate async execution (MAXINT/2) | |
static const int | PRIORITY_HIGH |
Very important, used for e.g. io handlers (G*HIGH) | |
static const int | PRIORITY_NEXT |
Still very important, used for need-to-be-async operations (G*HIGH) | |
static const int | PRIORITY_NOTIFY |
Important, delivers async callbacks (G*DEFAULT) | |
static const int | PRIORITY_NORMAL |
Normal importantance, interfaces to all layers (G*DEFAULT) | |
static const int | PRIORITY_UPDATE |
Mildly important, used for GUI updates or user information (G*HIGH_IDLE) | |
static const int | PRIORITY_IDLE |
Mildly important, used for GUI updates or user information (G*DEFAULT_IDLE) | |
static const int | PRIORITY_BACKGROUND |
Unimportant, used when everything else done (G*LOW) | |
Protected Types | |
typedef std::vector< Source * > | SourceList |
Protected Member Functions | |
EventLoop (MainLoop &) | |
Source * | find_first_L () |
Source * | find_source_L (uint id) |
bool | has_primary_L (void) |
void | remove_source_Lm (Source *source) |
void | kill_sources_Lm (void) |
void | unpoll_sources_U () |
void | collect_sources_Lm (State &) |
bool | prepare_sources_Lm (State &, int64 *, QuickPfdArray &) |
bool | check_sources_Lm (State &, const QuickPfdArray &) |
Source * | dispatch_source_Lm (State &) |
Protected Attributes | |
MainLoop & | main_loop_ |
SourceList | sources_ |
int64 | dispatch_priority_ |
QuickSourceArray & | poll_sources_ |
uint64 | pollmem1 [3] |
Source * | pollmem2 [7] |
bool | primary_ |
Loop object, polling for events and executing callbacks in accordance.
MainLoop* Rapicorn::EventLoop::main_loop | ( | ) | const [inline] |
Get the main loop for this loop.