Utopia 2
Framework for studying models of complex & adaptive systems.
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Utopia::DataIO::DataManager< Traits > Class Template Reference

Manage different tasks of writing out data from a source in a uniform yet flexible way. This is a class which, when being supplied with appropriate callables, manages their execution. More...

#include <data_manager.hh>

Public Types

using Self = DataManager< Traits >
 Alias for own type.
 
using Task = typename Traits::Task
 Task type, as defined in the traits.
 
using Decider = typename Traits::Decider
 Decider type, as defined in the traits.
 
using Trigger = typename Traits::Trigger
 Trigger type, as defined in the traits.
 
using ExecutionProcess = typename Traits::ExecutionProcess
 Execution process type, as defined in the traits.
 
using TaskMap = std::unordered_map< std::string, std::shared_ptr< Task > >
 Map of task names to shared pointers of Tasks; supporting polymorphism.
 
using OrderedTaskMap = std::map< std::string, std::shared_ptr< Task > >
 Same as TaskMap, but using std::map such that ordering is preserved.
 
using DeciderMap = std::unordered_map< std::string, std::shared_ptr< Decider > >
 Map of decider names to decider functions.
 
using OrderedDeciderMap = std::map< std::string, std::shared_ptr< Decider > >
 Same as DeciderMap, but using std::map such that ordering is preserved.
 
using TriggerMap = std::unordered_map< std::string, std::shared_ptr< Trigger > >
 Map of trigger names to trigger functions.
 
using OrderedTriggerMap = std::map< std::string, std::shared_ptr< Trigger > >
 Same as TriggerMap, but using std::map such that ordering is preserved.
 
using AssocsMap = std::unordered_map< std::string, std::vector< std::string > >
 Map of decider/task names to a collection of task names.
 

Public Member Functions

template<class Model , typename... Args>
void operator() (Model &&model, Args &&... args)
 Invoke the execution process.
 
DeciderMapget_deciders ()
 Get the container of decider objects.
 
TaskMapget_tasks ()
 Get the container of task objects.
 
TriggerMapget_triggers ()
 Get the container of trigger objects.
 
AssocsMapget_decider_task_map ()
 Get the decider task map object.
 
AssocsMapget_trigger_task_map ()
 Get the trigger task map object.
 
const std::shared_ptr< spdlog::logger > & get_logger () const
 Get the logger used in this DataManager.
 
 DataManager ()=default
 Construct a new Data Manager object.
 
 DataManager (const DataManager &other)=default
 Construct a new Data Manager object.
 
 DataManager (DataManager &&other)=default
 Construct a new Data Manager object.
 
DataManageroperator= (const DataManager &other)=default
 Copy assignment.
 
DataManageroperator= (DataManager &&other)=default
 Move assignment.
 
virtual ~DataManager ()=default
 Destroy the Data Manager object.
 
 DataManager (const Config &cfg, TaskMap tasks, std::unordered_map< std::string, std::function< std::shared_ptr< Decider >() > > deciders, std::unordered_map< std::string, std::function< std::shared_ptr< Trigger >() > > triggers, ExecutionProcess execproc)
 Construct DataManager using a config node.
 
 DataManager (OrderedTaskMap tasks, OrderedDeciderMap deciders, OrderedTriggerMap triggers, ExecutionProcess execproc, std::map< std::string, std::string > decider_task_assocs={}, std::map< std::string, std::string > trigger_task_assocs={})
 Construct DataManager without config node from passed mappings only. If the last two arguments are not given, it is assumed that tasks, deciders, triggers are of equal length and are to be associated in a one-to-one way in the order given. This order dependencey is also the reason why we make use of 'OrderedTaskMap' (an std::map) here.
 
void swap (DataManager &other)
 Exchange the state of the caller with the argument 'other'.
 

Protected Member Functions

template<typename ObjMap , typename KnownObjectsMap >
ObjMap _setup_from_config (const Config &cfg, KnownObjectsMap &&known_objects)
 
TaskMap _filter_tasks_from_config (const Config &task_cfg, TaskMap &tasks)
 Check which tasks supplied to the datamanager are active and shall be retained, using the config node provided.
 
template<typename DTMap >
AssocsMap _associate_from_config (const Config &task_cfg, DTMap &&dt_map, std::string lookup_key)
 Given a configuration, builds an association map.
 

Protected Attributes

std::shared_ptr< spdlog::logger > _log
 Used to inform about progress of DataManager operations.
 
TaskMap _tasks
 Stores (name, task) pairs in an unordered map.
 
DeciderMap _deciders
 Stores (name, deciderfunction) pairs in an unordered map.
 
TriggerMap _triggers
 Stores (name, triggerfunction) pairs in an unordered map.
 
AssocsMap _decider_task_map
 Mapping from deciders names to containers of names of tasks that use those deciders.
 
AssocsMap _trigger_task_map
 Mapping from trigger names to containers of names of tasks that use those triggers.
 
ExecutionProcess _execution_process
 Callable which tells how to utilize triggers, deciders, tasks to write data.
 

Detailed Description

template<class Traits>
class Utopia::DataIO::DataManager< Traits >

Manage different tasks of writing out data from a source in a uniform yet flexible way. This is a class which, when being supplied with appropriate callables, manages their execution.

Idea

The entire process of writing data from a source to a location consists of deciding when to write, deciding when to switch location (making sure the respective location exists) and then actually writing data. The DataManager handles multiple independent instances of this process. In that sence, it works like an STL stream.

Implementation

Template Parameters
TraitsA ::DataManagerTraits-like type. Supplies all customaizable types for the DataManager, i.e. the decider, trigger, task, and execution process.

Member Typedef Documentation

◆ AssocsMap

template<class Traits >
using Utopia::DataIO::DataManager< Traits >::AssocsMap = std::unordered_map< std::string, std::vector< std::string > >

Map of decider/task names to a collection of task names.

◆ Decider

template<class Traits >
using Utopia::DataIO::DataManager< Traits >::Decider = typename Traits::Decider

Decider type, as defined in the traits.

◆ DeciderMap

template<class Traits >
using Utopia::DataIO::DataManager< Traits >::DeciderMap = std::unordered_map< std::string, std::shared_ptr< Decider > >

Map of decider names to decider functions.

◆ ExecutionProcess

template<class Traits >
using Utopia::DataIO::DataManager< Traits >::ExecutionProcess = typename Traits::ExecutionProcess

Execution process type, as defined in the traits.

◆ OrderedDeciderMap

template<class Traits >
using Utopia::DataIO::DataManager< Traits >::OrderedDeciderMap = std::map< std::string, std::shared_ptr< Decider > >

Same as DeciderMap, but using std::map such that ordering is preserved.

◆ OrderedTaskMap

template<class Traits >
using Utopia::DataIO::DataManager< Traits >::OrderedTaskMap = std::map< std::string, std::shared_ptr< Task > >

Same as TaskMap, but using std::map such that ordering is preserved.

◆ OrderedTriggerMap

template<class Traits >
using Utopia::DataIO::DataManager< Traits >::OrderedTriggerMap = std::map< std::string, std::shared_ptr< Trigger > >

Same as TriggerMap, but using std::map such that ordering is preserved.

◆ Self

template<class Traits >
using Utopia::DataIO::DataManager< Traits >::Self = DataManager< Traits >

Alias for own type.

◆ Task

template<class Traits >
using Utopia::DataIO::DataManager< Traits >::Task = typename Traits::Task

Task type, as defined in the traits.

◆ TaskMap

template<class Traits >
using Utopia::DataIO::DataManager< Traits >::TaskMap = std::unordered_map< std::string, std::shared_ptr< Task > >

Map of task names to shared pointers of Tasks; supporting polymorphism.

◆ Trigger

template<class Traits >
using Utopia::DataIO::DataManager< Traits >::Trigger = typename Traits::Trigger

Trigger type, as defined in the traits.

◆ TriggerMap

template<class Traits >
using Utopia::DataIO::DataManager< Traits >::TriggerMap = std::unordered_map< std::string, std::shared_ptr< Trigger > >

Map of trigger names to trigger functions.

Constructor & Destructor Documentation

◆ DataManager() [1/5]

template<class Traits >
Utopia::DataIO::DataManager< Traits >::DataManager ( )
default

Construct a new Data Manager object.

◆ DataManager() [2/5]

template<class Traits >
Utopia::DataIO::DataManager< Traits >::DataManager ( const DataManager< Traits > &  other)
default

Construct a new Data Manager object.

Parameters
otherObject to copy state from

◆ DataManager() [3/5]

template<class Traits >
Utopia::DataIO::DataManager< Traits >::DataManager ( DataManager< Traits > &&  other)
default

Construct a new Data Manager object.

Parameters
otherObject to move state from

◆ ~DataManager()

template<class Traits >
virtual Utopia::DataIO::DataManager< Traits >::~DataManager ( )
virtualdefault

Destroy the Data Manager object.

◆ DataManager() [4/5]

template<class Traits >
Utopia::DataIO::DataManager< Traits >::DataManager ( const Config cfg,
TaskMap  tasks,
std::unordered_map< std::string, std::function< std::shared_ptr< Decider >() > >  deciders,
std::unordered_map< std::string, std::function< std::shared_ptr< Trigger >() > >  triggers,
ExecutionProcess  execproc 
)
inline

Construct DataManager using a config node.

Arguments are an unordered_map that assigns names to shared_ptrs of tasks, and two other unordered_maps that assign names to factory functions for producing shared_ptrs to Deciders and triggers. This factory function approach enables us to use dynamic polymorphism on the deciders and triggers. This ability is not useful for tasks however, because they are designed to receive their functionality from the outside via passing them function objects on construction. Hence it is forgone here.

Parameters
cfgConfiguration node that contains datamanager config options
tasksunordered_map containing name->shared_ptr_to_task mapping
decidersmap associating names to factory functions producing shared_ptr_to_deciders
triggersmap associating names to factory functions producing shared_ptr_to_triggers
execprocFunction object that determines the execution process of the datamanager, i.e., how the deciders, triggers and tasks work together to produce the output data
609 :
610 // Get the global data manager logger
611 _log(spdlog::get("data_mngr")),
612 _tasks(_filter_tasks_from_config(cfg["tasks"], tasks)),
615 // Create maps: decider/trigger -> vector of task names
617 _associate_from_config(cfg["tasks"], _deciders, "decider")),
619 _associate_from_config(cfg["tasks"], _triggers, "trigger")),
621 {
622 // nothing remains to be done here
623 }
TaskMap _filter_tasks_from_config(const Config &task_cfg, TaskMap &tasks)
Check which tasks supplied to the datamanager are active and shall be retained, using the config node...
Definition data_manager.hh:305
ExecutionProcess _execution_process
Callable which tells how to utilize triggers, deciders, tasks to write data.
Definition data_manager.hh:211
AssocsMap _trigger_task_map
Mapping from trigger names to containers of names of tasks that use those triggers.
Definition data_manager.hh:205
TaskMap _tasks
Stores (name, task) pairs in an unordered map.
Definition data_manager.hh:183
std::shared_ptr< spdlog::logger > _log
Used to inform about progress of DataManager operations.
Definition data_manager.hh:178
AssocsMap _associate_from_config(const Config &task_cfg, DTMap &&dt_map, std::string lookup_key)
Given a configuration, builds an association map.
Definition data_manager.hh:380
AssocsMap _decider_task_map
Mapping from deciders names to containers of names of tasks that use those deciders.
Definition data_manager.hh:199
TriggerMap _triggers
Stores (name, triggerfunction) pairs in an unordered map.
Definition data_manager.hh:193
DeciderMap _deciders
Stores (name, deciderfunction) pairs in an unordered map.
Definition data_manager.hh:188
Container select_entities(const Manager &mngr, const DataIO::Config &sel_cfg)
Select entities according to parameters specified in a configuration.
Definition select.hh:213

◆ DataManager() [5/5]

template<class Traits >
Utopia::DataIO::DataManager< Traits >::DataManager ( OrderedTaskMap  tasks,
OrderedDeciderMap  deciders,
OrderedTriggerMap  triggers,
ExecutionProcess  execproc,
std::map< std::string, std::string >  decider_task_assocs = {},
std::map< std::string, std::string >  trigger_task_assocs = {} 
)
inline

Construct DataManager without config node from passed mappings only. If the last two arguments are not given, it is assumed that tasks, deciders, triggers are of equal length and are to be associated in a one-to-one way in the order given. This order dependencey is also the reason why we make use of 'OrderedTaskMap' (an std::map) here.

Parameters
tasksmap that assigns names to shared_ptrs to tasks
decidersmap that assigns names to shared_ptrs to deciders
triggersmap that assigns names to shared_ptrs to triggers
execprocFunction object that determines the execution process of the datamanager, i.e., how the deciders, triggers and tasks work together to produce the the output data
decider_task_assocsMap that assigns each task a decider function by name: taskname->decidername
trigger_task_assocsMap that assigns each task a trigger function by name: taskname->triggername
647 {},
648 std::map< std::string, std::string > trigger_task_assocs = {}) :
649 // Get the global data manager logger
650 _log(spdlog::get("data_mngr")),
654 // Create maps: decider/trigger -> vector of task names
660 {
661 _log->info("DataManager setup with {} task(s), {} decider(s), and "
662 "{} trigger(s).",
663 _tasks.size(),
664 _decider_task_map.size(),
665 _trigger_task_map.size());
666 }
std::unordered_map< std::string, std::shared_ptr< Decider > > DeciderMap
Map of decider names to decider functions.
Definition data_manager.hh:156
std::unordered_map< std::string, std::vector< std::string > > AssocsMap
Map of decider/task names to a collection of task names.
Definition data_manager.hh:172
std::unordered_map< std::string, std::shared_ptr< Task > > TaskMap
Map of task names to shared pointers of Tasks; supporting polymorphism.
Definition data_manager.hh:149
std::unordered_map< std::string, std::shared_ptr< Trigger > > TriggerMap
Map of trigger names to trigger functions.
Definition data_manager.hh:164
AssocsMap build_task_association_map(const NamedTasks &tasks, const NamedDTMap &named_dts, Assocs assocs=Assocs{})
Build an association map, i.e., a map that associates a decider/trigger name with a collection of tas...
Definition utils.hh:149
auto end(zip< Containers... > &zipper)
end function like std::end
Definition zip.hh:550
auto begin(zip< Containers... > &zipper)
Begin function like std::begin.
Definition zip.hh:537

Member Function Documentation

◆ _associate_from_config()

template<class Traits >
template<typename DTMap >
AssocsMap Utopia::DataIO::DataManager< Traits >::_associate_from_config ( const Config task_cfg,
DTMap &&  dt_map,
std::string  lookup_key 
)
inlineprotected

Given a configuration, builds an association map.

Template Parameters
DTMapautomatically determined
Parameters
task_cfgThe mapping to iterate as given by the config. It holds the tasks and names the decider and trigger and the task is associated to and tells if it is active or not.
dt_mapMap that holds names->decider/trigger mapping. Used to check if the names in the config indeed match some known decider/trigger.
lookup_keyKey which names the mapping used for association, i.e., "decider" or "trigger".
Returns
AssocsMap Map that associates the given deciders/triggers with a vector of names that name tasks.
383 {
385
386 // error checking regarding the task_cfg node is done in the
387 // _filter_tasks function, and hence does not need to be repeated here
388
389 _log->debug("Building task to {} associations from given config ...",
390 lookup_key);
391
392 // Iterate over the given configuration node, pull out the name of the
393 // task and the name of the associated decider/trigger, and put the
394 // AssocsMap together from this
395 for (const auto& node_pair : task_cfg)
396 {
397 // Unpack the (key node, value node) pair
398 const auto task_name = node_pair.first.as< std::string >();
399 const auto& task_cfg = node_pair.second;
400
401 // Find out if active; true by default
402 const auto active = get_as< bool >("active", task_cfg, true);
403
404 // Associate only if active
405 if (not active)
406 {
407 _log->debug("Task '{}' was marked as not active; skipping.",
408 task_name);
409 continue;
410 }
411
412 // Get the name of the trigger or decider to associate to
413
414 const auto dt_to_associate_to =
416
417 // Find erroneous config namings for deciders/triggers
418 if (dt_map.find(dt_to_associate_to) == dt_map.end())
419 {
420 this->_log->info(" Error for decider/trigger: {}",
422 throw std::invalid_argument(
423 "Error when trying to associate tasks to deciders or "
424 "triggers: "
425 "Name in config does not match the name of a "
426 "decider/trigger known to the datamanager");
427 }
428 else
429 {
430 // dt_to_associate_to exists in the dt_map, we're good
431 map[dt_to_associate_to].push_back(task_name);
432
433 _log->debug("Associating task '{}' to {} '{}'.",
434 task_name,
437 }
438 }
439
440 // Use the helper function to build the actual association map
441 return map;
442 }

◆ _filter_tasks_from_config()

template<class Traits >
TaskMap Utopia::DataIO::DataManager< Traits >::_filter_tasks_from_config ( const Config task_cfg,
TaskMap tasks 
)
inlineprotected

Check which tasks supplied to the datamanager are active and shall be retained, using the config node provided.

Parameters
task_cfgconfig node defining tasks
tasksunordered map naming pointers to tasks
Returns
TaskMap 'tasks' map filtered by activity
306 {
307 // map to use in the end
308 TaskMap map;
309
310 if (not task_cfg)
311 {
312 throw std::invalid_argument(
313 "Error: data_manager config node needs to contain a node "
314 "'tasks' which it apparently is missing ");
315 }
316 if (not task_cfg.IsMap())
317 {
318 throw std::invalid_argument("Expected a mapping for DataManager "
319 "task filtering, got:\n" +
321 }
322
323 for (const auto& node_pair : task_cfg)
324 {
325 // Unpack the (key node, value node) pair, i.e. the name of the
326 // object that is to be configured and the corresponding
327 // configuration node
328 const auto cfg_name = node_pair.first.as< std::string >();
329 const auto& obj_cfg = node_pair.second;
330
331 _log->debug("Investigating task {} and checking if it is active ",
332 cfg_name);
333
334 if (get_as< bool >("active", obj_cfg))
335 {
336
337 _log->debug("Task '{}' was marked as active; will be kept.",
338 cfg_name);
339
340 if (tasks.find(cfg_name) == tasks.end())
341 {
342 throw std::invalid_argument(
343 "Error, no task supplied to the datamanager is named " +
344 cfg_name);
345 }
346 else
347 {
349 }
350 }
351 else
352 {
353 // skip inactive tasks
354 _log->debug("Task '{}' was marked as not active; skipping.",
355 cfg_name);
356 continue;
357 }
358 }
359
360 return map;
361 }
std::string to_string(const Config &node)
Given a config node, returns a string representation of it.
Definition cfg_utils.hh:110

◆ _setup_from_config()

template<class Traits >
ObjMap Utopia::DataIO::DataManager< Traits >::_setup_from_config ( const Config cfg,
KnownObjectsMap &&  known_objects 
)
inlineprotected
218 {
219 _log->debug("Setting up name -> object map from config node ...");
220
221 // Check whether the given configuration is valid
222 if (not cfg)
223 {
224 throw std::invalid_argument("Received a zombie node for the setup "
225 "of DataManager objects!");
226 }
227 else if (not cfg.IsMap())
228 {
229 throw std::invalid_argument("Expected a mapping for DataManager "
230 "object setup, got:\n" +
231 to_string(cfg));
232 }
233
234 // The name -> object map that is to be populated
235 ObjMap map;
236 _log->debug("Configuring DataManager objects ... (container size: {})",
237 known_objects.size());
238
239 // Go over the known objects and decide whether to retain them
240 // as they are or whether new objects need to be constructed from the
241 // known ones
242 // Depending on the name of the object, the name given in the
243 // configuration, and the configuration itself, decide on
244 // whether a new object needs to be constructed or can be
245 // retained from the known objects.
246 // If the configuration specifies a type, use that information
247 // to either construct a new object from given arguments or
248 // copy-construct one from an existing object
249 for (const auto& node_pair : cfg)
250 {
251 // Unpack the (key node, value node) pair, i.e. the name of the
252 // object that is to be configured and the corresponding
253 // configuration node
254 const auto cfg_name = node_pair.first.as< std::string >();
255 const auto& obj_cfg = node_pair.second;
256
257 const auto type_name = get_as< std::string >("type", obj_cfg);
258
259 _log->debug("Attempting to build {} of type {} from config",
260 cfg_name,
261 type_name);
262
263 if (known_objects.find(type_name) == known_objects.end())
264 {
265 throw std::invalid_argument("Error for node " + cfg_name +
266 ": No 'type' node given");
267 }
268 else
269 {
270 if (obj_cfg["args"])
271 {
272 _log->debug(" ... using given arguments from config ...");
273 map[cfg_name] =
274 known_objects[type_name](); // default construct
275 map[cfg_name]->set_from_cfg(obj_cfg["args"]);
276 }
277 else
278 {
279
280 // if no args is given, do a default build because this
281 // not all of the deciders/triggers need an args node
282 _log->debug("... constructing {} of type {} without "
283 "config args because no node 'args' is "
284 "given for it in the config.",
285 cfg_name,
286 type_name);
287
289 }
290 }
291 }
292
293 return map;
294 }

◆ get_decider_task_map()

template<class Traits >
AssocsMap & Utopia::DataIO::DataManager< Traits >::get_decider_task_map ( )
inline

Get the decider task map object.

Returns
const AssocsMap&
505 {
506 return _decider_task_map;
507 }

◆ get_deciders()

template<class Traits >
DeciderMap & Utopia::DataIO::DataManager< Traits >::get_deciders ( )
inline

Get the container of decider objects.

Returns
const DeciderMap&
472 {
473 return _deciders;
474 }

◆ get_logger()

template<class Traits >
const std::shared_ptr< spdlog::logger > & Utopia::DataIO::DataManager< Traits >::get_logger ( ) const
inline

Get the logger used in this DataManager.

Returns
const std::shared_ptr<spdlog::logger>&
527 {
528 return _log;
529 }

◆ get_tasks()

template<class Traits >
TaskMap & Utopia::DataIO::DataManager< Traits >::get_tasks ( )
inline

Get the container of task objects.

Returns
const TaskMap&
483 {
484 return _tasks;
485 }

◆ get_trigger_task_map()

template<class Traits >
AssocsMap & Utopia::DataIO::DataManager< Traits >::get_trigger_task_map ( )
inline

Get the trigger task map object.

Returns
const AssocsMap&
516 {
517 return _trigger_task_map;
518 }

◆ get_triggers()

template<class Traits >
TriggerMap & Utopia::DataIO::DataManager< Traits >::get_triggers ( )
inline

Get the container of trigger objects.

Returns
const TriggerMap&
494 {
495 return _triggers;
496 }

◆ operator()()

template<class Traits >
template<class Model , typename... Args>
void Utopia::DataIO::DataManager< Traits >::operator() ( Model &&  model,
Args &&...  args 
)
inline

Invoke the execution process.

Template Parameters
ArgsParameter pack types
Parameters
modelThe model reference to pass on to the execution process
argsThe parameter pack to pass on to the execution process
458 {
460 *this, std::forward< Model >(model), std::forward< Args >(args)...);
461 }

◆ operator=() [1/2]

template<class Traits >
DataManager & Utopia::DataIO::DataManager< Traits >::operator= ( const DataManager< Traits > &  other)
default

Copy assignment.

Parameters
other
Returns
DataManager& reference to object to assign the state from.

◆ operator=() [2/2]

template<class Traits >
DataManager & Utopia::DataIO::DataManager< Traits >::operator= ( DataManager< Traits > &&  other)
default

Move assignment.

Parameters
other
Returns
DataManager& reference to object to assign the state from.

◆ swap()

template<class Traits >
void Utopia::DataIO::DataManager< Traits >::swap ( DataManager< Traits > &  other)
inline

Exchange the state of the caller with the argument 'other'.

Parameters
other
677 {
678 if (this == &other)
679 {
680 return;
681 }
682
683 using std::swap;
684 swap(_log, other._log);
685 swap(_tasks, other._tasks);
686 swap(_deciders, other._deciders);
687 swap(_triggers, other._triggers);
688 swap(_decider_task_map, other._decider_task_map);
689 swap(_trigger_task_map, other._trigger_task_map);
690 }
void swap(DataManager &other)
Exchange the state of the caller with the argument 'other'.
Definition data_manager.hh:676

Member Data Documentation

◆ _decider_task_map

template<class Traits >
AssocsMap Utopia::DataIO::DataManager< Traits >::_decider_task_map
protected

Mapping from deciders names to containers of names of tasks that use those deciders.

◆ _deciders

template<class Traits >
DeciderMap Utopia::DataIO::DataManager< Traits >::_deciders
protected

Stores (name, deciderfunction) pairs in an unordered map.

◆ _execution_process

template<class Traits >
ExecutionProcess Utopia::DataIO::DataManager< Traits >::_execution_process
protected

Callable which tells how to utilize triggers, deciders, tasks to write data.

◆ _log

template<class Traits >
std::shared_ptr< spdlog::logger > Utopia::DataIO::DataManager< Traits >::_log
protected

Used to inform about progress of DataManager operations.

◆ _tasks

template<class Traits >
TaskMap Utopia::DataIO::DataManager< Traits >::_tasks
protected

Stores (name, task) pairs in an unordered map.

◆ _trigger_task_map

template<class Traits >
AssocsMap Utopia::DataIO::DataManager< Traits >::_trigger_task_map
protected

Mapping from trigger names to containers of names of tasks that use those triggers.

◆ _triggers

template<class Traits >
TriggerMap Utopia::DataIO::DataManager< Traits >::_triggers
protected

Stores (name, triggerfunction) pairs in an unordered map.


The documentation for this class was generated from the following file: