00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _DB_TASK_H_
00027 #define _DB_TASK_H_
00028
00029 #include <iostream>
00030
00031 #include "DBPlanner/task.h"
00032
00033 namespace db_planner {
00034 class DatabaseManager;
00035 }
00036
00037 namespace graspit_dbase_tasks {
00038
00039 class DBTaskDispatcher;
00040
00042
00070 class DBTask {
00071 public:
00072 enum Status{RUNNING, ERROR, DONE};
00073 protected:
00075 Status mStatus;
00076
00078 DBTaskDispatcher* mDispatcher;
00079
00081
00082 db_planner::DatabaseManager *mDBMgr;
00083
00085 db_planner::TaskRecord mRecord;
00086
00087 public:
00088 DBTask(DBTaskDispatcher *disp, db_planner::DatabaseManager *mgr, db_planner::TaskRecord rec)
00089 : mDispatcher(disp), mDBMgr(mgr), mRecord(rec) {};
00090
00091 virtual ~DBTask(){}
00092
00093 virtual void start() = 0;
00094
00095 virtual void mainLoop() {}
00096
00098 Status getStatus(){return mStatus;}
00099
00101 db_planner::TaskRecord getRecord(){return mRecord;}
00102 };
00103
00105
00107 class DBEmptyTask : public DBTask
00108 {
00109 public:
00110 DBEmptyTask(DBTaskDispatcher *disp, db_planner::DatabaseManager *mgr, db_planner::TaskRecord rec) :
00111 DBTask(disp, mgr, rec) {}
00112 ~DBEmptyTask(){}
00113 void start(){std::cout << "Started simple task\n"; mStatus = RUNNING;}
00114 void mainLoop(){std::cout << "Finished simple task\n"; mStatus = DONE;}
00115 };
00116
00118
00120 class DBEmptyOneShotTask : public DBTask
00121 {
00122 public:
00123 DBEmptyOneShotTask(DBTaskDispatcher *disp, db_planner::DatabaseManager *mgr, db_planner::TaskRecord rec) :
00124 DBTask(disp, mgr, rec) {}
00125 ~DBEmptyOneShotTask(){}
00126 void start(){std::cout << "Started and finished one-shot simple task\n"; mStatus = DONE;}
00127 };
00128
00129 }
00130
00131 #endif