Sched module

TaskFactory

The [TaskFactory]({#ref classicy_1_1sched_1_1TaskFactory #}) can dynamically instantiate registered [sched::Task]({#ref

TaskFactory

#include <icy/sched/taskfactory.h>

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

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)

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)

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)

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

Parameters

  • type Type name to deregister.

tasks

const inline

inline TaskMap tasks() const

Returns a snapshot copy of the registered task map.


createTrigger

inline

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

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)

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)

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

Parameters

  • type Type name to deregister.

triggers

const inline

inline TriggerMap triggers() const

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

Returns the default TaskFactory singleton.

Protected Attributes

ReturnNameDescription
std::mutex_mutex
TaskMap_tasks
TriggerMap_triggers

_mutex

std::mutex _mutex

_tasks

TaskMap _tasks

_triggers

TriggerMap _triggers

Public Types

NameDescription
TaskMapScheduled Tasks.
TriggerMapSchedule Triggers.

TaskMap

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

Scheduled Tasks.


TriggerMap

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

Schedule Triggers.