Sched module

TaskFactory

The TaskFactory can dynamically instantiate registered sched::Task and sched::Trigger classes from named strings.

#include <icy/sched/taskfactory.h>

class TaskFactory

Defined in src/sched/include/icy/sched/taskfactory.h:49

Public Methods

ReturnNameDescription
std::unique_ptr< sched::Task >createTask inlineInstantiates and returns a registered task by type name.
voidregisterTask inlineRegisters a task type T under the given name. Subsequent calls to createTask() with this type will return a T instance.
voidunregisterTask inlineRemoves the task registration for type. No-op if not registered.
TaskMaptasks const inlineReturns a snapshot copy of the registered task map.
std::unique_ptr< sched::Trigger >createTrigger inlineInstantiates and returns a registered trigger by type name.
voidregisterTrigger inlineRegisters a trigger type T under the given name.
voidunregisterTrigger inlineRemoves the trigger registration for type. No-op if not registered.
TriggerMaptriggers const inlineReturns a snapshot copy of the registered trigger map.

createTask

inline

inline std::unique_ptr< sched::Task > createTask(const std::string & type)

Defined in src/sched/include/icy/sched/taskfactory.h:67

Instantiates and returns a registered task by type name.

Returns

Owning pointer to the new task instance.

Parameters

ParameterTypeDescription
typeconst std::string &Registered type name.

Exceptions

ExceptionDescription
std::runtime_errorif type is not registered.

registerTask

inline

template<typename T> inline void registerTask(const std::string & type)

Defined in src/sched/include/icy/sched/taskfactory.h:81

Registers a task type T under the given name. Subsequent calls to createTask() with this type will return a T instance.

Parameters

ParameterTypeDescription
typeconst std::string &Type name string to register.

unregisterTask

inline

inline void unregisterTask(const std::string & type)

Defined in src/sched/include/icy/sched/taskfactory.h:89

Removes the task registration for type. No-op if not registered.

Parameters

ParameterTypeDescription
typeconst std::string &Type name to deregister.

tasks

const inline

inline TaskMap tasks() const

Defined in src/sched/include/icy/sched/taskfactory.h:99

Returns a snapshot copy of the registered task map.


createTrigger

inline

inline std::unique_ptr< sched::Trigger > createTrigger(const std::string & type)

Defined in src/sched/include/icy/sched/taskfactory.h:114

Instantiates and returns a registered trigger by type name.

Returns

Owning pointer to the new trigger instance.

Parameters

ParameterTypeDescription
typeconst std::string &Registered type name.

Exceptions

ExceptionDescription
std::runtime_errorif type is not registered.

registerTrigger

inline

template<typename T> inline void registerTrigger(const std::string & type)

Defined in src/sched/include/icy/sched/taskfactory.h:127

Registers a trigger type T under the given name.

Parameters

ParameterTypeDescription
typeconst std::string &Type name string to register.

unregisterTrigger

inline

inline void unregisterTrigger(const std::string & type)

Defined in src/sched/include/icy/sched/taskfactory.h:135

Removes the trigger registration for type. No-op if not registered.

Parameters

ParameterTypeDescription
typeconst std::string &Type name to deregister.

triggers

const inline

inline TriggerMap triggers() const

Defined in src/sched/include/icy/sched/taskfactory.h:145

Returns a snapshot copy of the registered trigger map.

Public Static Methods

ReturnNameDescription
TaskFactory &getDefault static inlineReturns the default TaskFactory singleton.

getDefault

static inline

static inline TaskFactory & getDefault()

Defined in src/sched/include/icy/sched/taskfactory.h:53

Returns the default TaskFactory singleton.

Protected Attributes

ReturnNameDescription
std::mutex_mutex
TaskMap_tasks
TriggerMap_triggers

_mutex

std::mutex _mutex

Defined in src/sched/include/icy/sched/taskfactory.h:152


_tasks

TaskMap _tasks

Type: TaskMap

Defined in src/sched/include/icy/sched/taskfactory.h:154


_triggers

TriggerMap _triggers

Type: TriggerMap

Defined in src/sched/include/icy/sched/taskfactory.h:155

Public Types

NameDescription
TaskMapScheduled Tasks.
TriggerMapSchedule Triggers.

TaskMap

using TaskMap = std::map< std::string, std::unique_ptr< sched::Task >(*)()>

Type: std::map< std::string, std::unique_ptr< sched::Task >(*)()>

Defined in src/sched/include/icy/sched/taskfactory.h:61

Scheduled Tasks.


TriggerMap

using TriggerMap = std::map< std::string, std::unique_ptr< sched::Trigger >(*)()>

Type: std::map< std::string, std::unique_ptr< sched::Trigger >(*)()>

Defined in src/sched/include/icy/sched/taskfactory.h:108

Schedule Triggers.