#ifndef TASK_SET_VALUE_H #define TASK_SET_VALUE_H #include "utility/scheduling/Task.h" #include "utility/scheduling/Blackboard.h" template class TaskSetValue: public Task { public: TaskSetValue(const std::string& valueName, T value); private: virtual void doEnter(std::shared_ptr blackboard); virtual TaskState doUpdate(std::shared_ptr blackboard); virtual void doExit(std::shared_ptr blackboard); virtual void doReset(std::shared_ptr blackboard); const std::string m_valueName; const T m_value; }; template TaskSetValue::TaskSetValue(const std::string& valueName, T value) : m_valueName(valueName) , m_value(value) { } template void TaskSetValue::doEnter(std::shared_ptr blackboard) { } template Task::TaskState TaskSetValue::doUpdate(std::shared_ptr blackboard) { std::lock_guard lock(blackboard->getMutex()); blackboard->set(m_valueName, m_value); return STATE_SUCCESS; } template void TaskSetValue::doExit(std::shared_ptr blackboard) { } template void TaskSetValue::doReset(std::shared_ptr blackboard) { } #endif // TASK_SET_VALUE_H