Lumiera
0.pre.03
»edit your freedom«
|
#include "steam/control/session-command-service.hpp"
Actual implementation of the SessionCommand service within the Lumiera Session subsystem.
Creating an instance of this class automatically registers corresponding interface with the Lumiera Interface/Plugin system and creates a forwarding proxy within the application core to route calls through this interface.
This service is backed by implementation facilities embedded within the SteamDispatcher, exposed through the CommandDispatch interface. Additionally, it operates a CommandInstanceManager to allow the creation of local instances "opened" for argument binding. In fact, this is the standard "command cycle" and the intended usage pattern.
Definition at line 70 of file session-command-service.hpp.
Public Member Functions | |
SessionCommandService (CommandDispatch &dispatcherLoopInterface) | |
void | bindArg (Symbol cmdID, Rec const &args) override |
Symbol | cycle (Symbol cmdID, string const &invocationID) override |
start next command cycle and "open" a new anonymous command instance | |
void | invoke (Symbol cmdID) override |
void | trigger (Symbol cmdID, Rec const &args) override |
Public Member Functions inherited from SessionCommand | |
virtual void | bindArg (Symbol cmdID, lib::diff::Rec const &args)=0 |
prepare command invocation: bind the command's arguments | |
virtual void | trigger (Symbol cmdID, lib::diff::Rec const &args)=0 |
bind the command's arguments and trigger command invocation immediately | |
Private Types | |
using | ServiceInstanceHandle = lumiera::InstanceHandle< LUMIERA_INTERFACE_INAME(lumieraorg_SessionCommand, 0), SessionCommand > |
Private Attributes | |
CommandDispatch & | dispatcher_ |
CommandInstanceManager | instanceManager_ |
ServiceInstanceHandle | serviceInstance_ |
Additional Inherited Members | |
Static Public Attributes inherited from SessionCommand | |
static lib::Depend< SessionCommand > | facade |
static storage for the facade access front-end | |
Protected Member Functions inherited from SessionCommand | |
virtual | ~SessionCommand () |
this is an interface | |
Private Member Functions inherited from NonCopyable | |
NonCopyable (NonCopyable const &)=delete | |
NonCopyable & | operator= (NonCopyable const &)=delete |
SessionCommandService | ( | CommandDispatch & | dispatcherLoopInterface | ) |
Definition at line 228 of file session-command-service.cpp.
References LUMIERA_INTERFACE_REF.
|
override |
cmdID | either the instanceID or the global cmdID |
error::Invalid | when no suitable command definition exists |
error::State | when the command's arguments are not suitably bound |
error::Logic | when the instance is already dispatched |
Definition at line 68 of file session-command-service.cpp.
|
override |
cmdID | either the instanceID or the global cmdID |
error::Invalid | when no suitable command definition exists |
error::Logic | when the instance is already dispatched |
Definition at line 86 of file session-command-service.cpp.
|
overridevirtual |
cmdID | either the instanceID or the global cmdID |
error::Invalid | when no suitable command definition exists |
error::State | when the command's arguments are not bound |
error::Logic | when the instance is already dispatched |
Implements SessionCommand.
Definition at line 102 of file session-command-service.cpp.
References CommandInstanceManager::dispatch().