Core Module

Core is the main module of Vitrall. Its main classes are:

Module
an abstract class that defines API for other modules.
Program
the main module of Vitrall. Program keeps a list of loaded modules and manages threads.
Function
an abstract class, basically a functor, that can be a native C++ function or a Lua code. Function can be encapsulated in Task and posted to TaskQueue.
Task
stores a handler function to be called upon task execution, its earliest and latest time limits, in which it can be called, and a type. Type is an integer of user-defined value, which can be used for giving up execution, when there are more queued tasks of given type (like rendering request).
TaskQueue
represents a queue of tasks.
Anteroom
connection between multiple TaskQueues and multiple threads. Free thread pops a Task from one of the TaskQueue and executes it. Main anteroom is placed in Program, that uses many threads, for tasks that can be executed in any thread. Anteroom is also present in Graphics::Renderer, for rendering tasks that have to execute in a specific thread.