Manager to handle InputComponent and OutputComponent, SceneElement can add these to get input from devices, or even write output to devices.
More...
#include <SurgSim/Input/InputManager.h>
|
template<class T > |
std::shared_ptr< T > | tryAddComponent (std::shared_ptr< SurgSim::Framework::Component > component, std::vector< std::shared_ptr< T >> *container) |
| Template version of the addComponent method. More...
|
|
template<class T > |
bool | tryRemoveComponent (std::shared_ptr< SurgSim::Framework::Component > component, std::vector< std::shared_ptr< T >> *container) |
| Template version of the removeComponent method. More...
|
|
void | processComponents () |
| Processes all the components that are scheduled for addition or removal, this needs to be called inside the doUpdate() function. More...
|
|
void | processBehaviors (const double dt) |
| Processes behaviors This needs to be called inside doUpdate() function in each 'sub' manager. More...
|
|
void | copyScheduledComponents (std::vector< std::shared_ptr< Component >> *inflightAdditions, std::vector< std::shared_ptr< Component >> *inflightRemovals, std::vector< std::shared_ptr< SceneElement >> *inflightElements) |
| Helper, blocks access to the additions and removal queue and copies the components from there to the intermediate inflight queues, after this call, the incoming queues will be empty. More...
|
|
std::shared_ptr< SurgSim::Framework::Logger > | getLogger () const |
| Returns this manager's logger. More...
|
|
template<class T > |
void | retireComponents (const std::vector< std::shared_ptr< T >> &container) |
|
bool | initialize () |
| Trigger the initialization of this object, this will be called before all other threads doStartup() are called. More...
|
|
bool | startUp () |
| Trigger the startup of this object, this will be called after all other threads doInit() was called the thread will only enter the run loop triggering upated() if all threads doInit() and doStartup() returned true. More...
|
|
bool | waitForBarrier (bool success) |
|
boost::mutex | m_componentMutex |
| Blocks protects addition and removal queues. More...
|
|
std::vector< std::shared_ptr< SurgSim::Framework::Behavior > > | m_behaviors |
| Collection of behaviors. More...
|
|
std::vector< std::shared_ptr< Component > > | m_componentAdditions |
|
std::vector< std::shared_ptr< Component > > | m_componentRemovals |
|
std::vector< std::shared_ptr< SceneElement > > | m_elementCache |
|
Timer | m_timer |
| Timer to measure the actual time taken to doUpdate. More...
|
|
std::shared_ptr< SurgSim::Framework::Logger > | m_logger |
| Logger for this thread. More...
|
|
Manager to handle InputComponent and OutputComponent, SceneElement can add these to get input from devices, or even write output to devices.
The devices have to be added to this class before components can be added to it.
◆ InputManager()
SurgSim::Input::InputManager::InputManager |
( |
| ) |
|
◆ ~InputManager()
SurgSim::Input::InputManager::~InputManager |
( |
| ) |
|
|
virtual |
◆ addDevice()
Adds a device to the manager.
- Parameters
-
- Returns
- true if it succeeds, false if the device already exists in the manager.
◆ addInputComponent()
bool SurgSim::Input::InputManager::addInputComponent |
( |
const std::shared_ptr< InputComponent > & |
input | ) |
|
|
private |
Specific call for input components.
Link input consumer to input device Data produced by device will then be consumed by input consumer
◆ addOutputComponent()
bool SurgSim::Input::InputManager::addOutputComponent |
( |
const std::shared_ptr< OutputComponent > & |
output | ) |
|
|
private |
Specific call for output components.
◆ doBeforeStop()
void SurgSim::Input::InputManager::doBeforeStop |
( |
| ) |
|
|
overrideprivatevirtual |
◆ doInitialize()
bool SurgSim::Input::InputManager::doInitialize |
( |
| ) |
|
|
overrideprivatevirtual |
◆ doStartUp()
bool SurgSim::Input::InputManager::doStartUp |
( |
| ) |
|
|
overrideprivatevirtual |
◆ doUpdate()
bool SurgSim::Input::InputManager::doUpdate |
( |
double |
dt | ) |
|
|
overrideprivatevirtual |
Implementation of actual work function for this thread, this has a default implementation to handle destruction better, as it could be called while the thread is under destruction, if left unimplemented this would trigger a call to a pure virtual function.
- Returns
- false when the thread is done, this will stop execution
Reimplemented from SurgSim::Framework::BasicThread.
◆ executeAdditions()
Adds a component, this can be either input or output, it will call the appropriate function in the device.
For an InputComonent this will succeed if the device name inside the component is known to the InputManager and if the component has not been added as an input yet. For an OutputComponent the call will fail if the device does not exist or the device has already been assigned an output.
- Parameters
-
- Returns
- true if it succeeds, it will fail if the device cannot be found to the component has already been added to the manager, and return false.
Implements SurgSim::Framework::ComponentManager.
◆ executeRemovals()
Removes the component described by component.
- Parameters
-
- Returns
- true if it succeeds, it will fail if the component cannot be found and return false.
Implements SurgSim::Framework::ComponentManager.
◆ getType()
int SurgSim::Input::InputManager::getType |
( |
| ) |
const |
|
overridevirtual |
◆ removeDevice()
Removes the device described by device.
- Parameters
-
- Returns
- true if it succeeds, false if the device is not in.
◆ tryFindDevice()
bool SurgSim::Input::InputManager::tryFindDevice |
( |
const std::string & |
name, |
|
|
DeviceInterface ** |
device |
|
) |
| |
|
private |
Returns a device with the given name, if one is available.
- Parameters
-
name | The name of the device. |
device | [out] The device. Unchanged if the return value is false. |
- Returns
- true if the device was found.
◆ InputManagerTest
friend class InputManagerTest |
|
friend |
◆ m_devices
Collection of all devices that have been added to the input manager key is the name, no two devices with the same name can be added to the input manager.
◆ m_inputs
std::vector<std::shared_ptr<InputComponent> > SurgSim::Input::InputManager::m_inputs |
|
private |
Collection of all input components.
◆ m_mutex
boost::mutex SurgSim::Input::InputManager::m_mutex |
|
private |
Protect critical sections.
◆ m_outputs
std::vector<std::shared_ptr<OutputComponent> > SurgSim::Input::InputManager::m_outputs |
|
private |
Collection of all output components.
The documentation for this class was generated from the following files: