Home
Sched module

TaskFactory

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

TaskFactory

#include <icy/sched/taskfactory.h>
class TaskFactory

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

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

List of all members

NameKindOwner
createTaskfunctionDeclared here
registerTaskfunctionDeclared here
unregisterTaskfunctionDeclared here
tasksfunctionDeclared here
createTriggerfunctionDeclared here
registerTriggerfunctionDeclared here
unregisterTriggerfunctionDeclared here
triggersfunctionDeclared here
getDefaultfunctionDeclared here
_mutexvariableDeclared here
_tasksvariableDeclared here
_triggersvariableDeclared here
TaskMaptypedefDeclared here
TriggerMaptypedefDeclared here

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.

Parameters

  • type Registered type name.

Returns

Owning pointer to the new task instance.

Exceptions

  • std::runtime_error if 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

  • T Concrete subclass of sched::Task with a default constructor.

Parameters

  • type 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

  • type 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.

Parameters

  • type Registered type name.

Returns

Owning pointer to the new trigger instance.

Exceptions

  • std::runtime_error if 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

Parameters

  • type 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

  • type 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

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


_triggers

TriggerMap _triggers

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 >(*)()>

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

Scheduled Tasks.


TriggerMap

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

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

Schedule Triggers.