--- smsdaemon/TaskManager.cpp 2008/12/19 22:33:41 206 +++ smsdaemon/TaskManager.cpp 2008/12/21 17:42:30 207 @@ -2,6 +2,9 @@ #include "TaskManager.h" #include "Logger.h" +#include "Common.h" +#include "Util.h" +#include "ConfigFile.h" #include @@ -23,10 +26,63 @@ } } +Task* TaskManager::CreateTask(const std::string& taskName, const std::map& arguments) +{ + if (taskName =="spool") + return new SpoolTask(); + + return 0; +} + +void TaskManager::DestroyTasks() +{ +} void TaskManager::LoadTasks() { - static SpoolTask task; + + Logger::logMessage("-------- TaskList --------"); + std::vector tasklist = Common::instance()->GetConfigfile()->GetValues("smsdaemon", "task"); + + for (unsigned i=0; i args; + + std::string argstr; + + if (pos == std::string::npos) + { + name = current; + } + else + { + name = Util::str_trim(current.substr(0,pos)); + argstr = Util::str_trim(current.substr(pos+1,1024)); + args = ConfigHelper::ParseArguments(argstr); + } + + Task* task = 0; + try + { + task = CreateTask(name, args ); + } + catch (std::exception& e) + { + Logger::logMessage(std::string("Failed to load task ") + name + " with args: " + argstr); + Logger::logMessage(std::string("Reason: ") + e.what()); + continue; + } + + if (task) + AddPersistantTask(task); + else + Logger::logMessage( std::string("Unknown task: ")+name); + + } //print the loaded tasks std::map::iterator it;