TaskFactory
TaskFactory
#include <icy/sched/taskfactory.h>The TaskFactory can dynamically instantiate registered sched::Task and sched::Trigger classes from named strings.
Public Methods
| Return | Name | Description |
|---|---|---|
std::unique_ptr< sched::Task > | createTask inline | Instantiates and returns a registered task by type name. |
void | registerTask inline | Registers a task type T under the given name. Subsequent calls to createTask() with this type will return a T instance. |
void | unregisterTask inline | Removes the task registration for type. No-op if not registered. |
TaskMap | tasks const inline | Returns a snapshot copy of the registered task map. |
std::unique_ptr< sched::Trigger > | createTrigger inline | Instantiates and returns a registered trigger by type name. |
void | registerTrigger inline | Registers a trigger type T under the given name. |
void | unregisterTrigger inline | Removes the trigger registration for type. No-op if not registered. |
TriggerMap | triggers const inline | Returns 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
typeRegistered type name.
Returns
Owning pointer to the new task instance.
Exceptions
std::runtime_erroriftypeis 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
TConcrete subclass of sched::Task with a default constructor.
Parameters
typeType 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
typeType name to deregister.
tasks
const inline
inline TaskMap tasks() constReturns 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
typeRegistered type name.
Returns
Owning pointer to the new trigger instance.
Exceptions
std::runtime_erroriftypeis not registered.
registerTrigger
inline
template<typename T> inline void registerTrigger(const std::string & type)Registers a trigger type T under the given name.
Parameters
TConcrete subclass of sched::Trigger with a default constructor.
Parameters
typeType 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
typeType name to deregister.
triggers
const inline
inline TriggerMap triggers() constReturns a snapshot copy of the registered trigger map.
Public Static Methods
| Return | Name | Description |
|---|---|---|
TaskFactory & | getDefault static inline | Returns the default TaskFactory singleton. |
getDefault
static inline
static inline TaskFactory & getDefault()Returns the default TaskFactory singleton.
Protected Attributes
_mutex
std::mutex _mutex_tasks
TaskMap _tasks_triggers
TriggerMap _triggersPublic Types
| Name | Description |
|---|---|
TaskMap | Scheduled Tasks. |
TriggerMap | Schedule 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.
