00001 #ifndef TASK_HH_ 00002 # define TASK_HH_ 00003 00004 # include <string> 00005 # include <list> 00006 00007 # include "cronous-env.hh" 00008 00009 namespace tasks 00010 { 00011 class Task 00012 { 00013 public: 00014 typedef std::list<Task *> TaskList; 00015 enum TaskState 00016 { 00017 task_initialized, 00018 task_running, 00019 task_terminated 00020 }; 00021 00022 public: 00023 Task(bool execute_now = false, 00024 environment::CronousEnv &ce = environment::CronousEnv::get_instance()); 00025 virtual ~Task(); 00026 00027 virtual void execute(); 00028 virtual void process(); 00029 virtual void terminate(); 00030 virtual const std::string &get_name() const; 00031 void fill_path(std::string &path) const; 00032 const Task *get_current_sub_task() const; 00033 void report_task_execution() const; 00034 00035 bool is_terminated() const; 00036 00037 protected: 00038 environment::CronousEnv &_ce; 00039 TaskList _sub_tasks; 00040 TaskState _task_state; 00041 00042 virtual void require_sub_task(); 00043 void clear_sub_tasks(); 00044 }; 00045 } 00046 00047 # include "task.hxx" 00048 00049 #endif