#ifndef __TASK_H__ #define __TASK_H__ #ifdef __cplusplus #include #include #include #include #include #define TASK_ON_HOLD 0 #define TASK_DONE 1 #define TASK_BURST 2 #define W4_STICKY 1 #define W4_READING 2 #define W4_WRITING 4 class Task : public Base { public: Task(); virtual ~Task(); virtual String GetName(); int Run(); int GetState(); void Suspend(int = -1) throw (GeneralException); void WaitFor(Task *); void WaitFor(Handle *, int = 0); void WaitFor(pid_t); void WaitFor(timeval, int = 0); Task * WaitedBy(); void SetBurst(); void Stop(); void Restart(); bool IsStopped(); void RemoveFromWatches(); protected: virtual int Do() throw (GeneralException); int current; private: class wbta_t { public: wbta_t(Task * ata) : ta(ata) { } Task * ta; }; int state; bool stopped; bool suspended; Task * wbta; }; #else #error This only works with a C++ compiler #endif #endif