Lumiera  0.pre.03
»edit your freedom«
steam-dispatcher.hpp File Reference

Go to the source code of this file.

Description

Dispatch and execute mutation operations on the High-level model.

The SteamDispatcher is the application facility to back and support working on the Session. While the session itself is just a data structure, operating the session means to process commands changing that data structure and it means to evaluate the session model and build a render nodes network in accordance to that model's meaning. This operation aspect of the session thus has a lifecycle and this is what we call the "session subsystem" within the application. When this is running, the SessionCommand facade is opened, accepting commands to work on the session. Such commands are passed through a dispatch queue to ensure consistent session state and to force strictly sequential processing of commands. Moreover, the SteamDispatcher's responsibility is to care for triggering the Builder after any changes induced by those commands. The Builder is guaranteed to run eventually, yet with some leeway.

Talking of state, independent of the lifecycle running state, the SteamDispatcher can be activated or deactivated. In active state, commands are dequeued and processed, while in inactive state commands are just accepted and queued, assuming the SessionCommand interface is currently opened. This activation state is controlled by the session datastructure itself, more precisely the SessionManager. A session can be stored, closed, reset and loaded with existing content from persistent storage, and only when the data structure is complete and consistent, processing can be enabled.

See also
Command
Session
steam-dispatcher.cpp for details of operational semantics

Definition in file steam-dispatcher.hpp.

#include "common/subsys.hpp"
#include "lib/depend.hpp"
#include "lib/sync.hpp"
#include <memory>

Classes

class  SteamDispatcher
 Guard to manage processing commands to operate on the session. More...
 

Namespaces

 steam
 Steam-Layer implementation namespace root.
 
 steam::control
 Steam-Layer dispatcher, controller and administrative facilities.