![]() |
Lumiera 0.pre.04
»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) | |
| Symbol | cycle (Symbol cmdID, string const &invocationID) override |
| start next command cycle and "open" a new anonymous command instance | |
| void | trigger (Symbol cmdID, Rec const &args) override |
| void | bindArg (Symbol cmdID, Rec const &args) override |
| void | invoke (Symbol cmdID) override |
Public Member Functions inherited from SessionCommand | |
| virtual void | trigger (Symbol cmdID, lib::diff::Rec const &args)=0 |
| bind the command's arguments and trigger command invocation immediately | |
| virtual void | bindArg (Symbol cmdID, lib::diff::Rec const &args)=0 |
| prepare command invocation: bind the command's arguments | |
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 ()=default | |
| NonCopyable ()=default | |
| NonCopyable (NonCopyable const &)=delete | |
| NonCopyable & | operator= (NonCopyable const &)=delete |
| SessionCommandService | ( | CommandDispatch & | dispatcherLoopInterface | ) |
Definition at line 228 of file session-command-service.cpp.
|
private |
Definition at line 80 of file session-command-service.hpp.
start next command cycle and "open" a new anonymous command instance
Implements SessionCommand.
Definition at line 49 of file session-command-service.cpp.
References SessionCommandService::instanceManager_, and CommandInstanceManager::newInstance().
Here is the call graph for this function:| 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.
References Command::bindArg(), CommandInstanceManager::dispatch(), CommandInstanceManager::getInstance(), and SessionCommandService::instanceManager_.
Here is the call graph for this function:| 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.
References Command::bindArg(), CommandInstanceManager::getInstance(), and SessionCommandService::instanceManager_.
Here is the call graph for this function:| 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(), and SessionCommandService::instanceManager_.
Here is the call graph for this function:
|
private |
Definition at line 74 of file session-command-service.hpp.
|
private |
Definition at line 75 of file session-command-service.hpp.
Referenced by SessionCommandService::bindArg(), SessionCommandService::cycle(), SessionCommandService::invoke(), and SessionCommandService::trigger().
|
private |
Definition at line 83 of file session-command-service.hpp.
Inheritance diagram for SessionCommandService:
Collaboration diagram for SessionCommandService: