00001
00002
00019 #pragma once
00020
00021 #include "../background.h"
00022
00023 namespace mongo {
00024
00025 namespace task {
00026
00030 class Task : private BackgroundJob {
00031 protected:
00032 virtual void doWork() = 0;
00033 virtual string name() const = 0;
00034 public:
00035 Task();
00036
00040 void halt();
00041 private:
00042 unsigned n, repeat;
00043 friend void fork(Task* t);
00044 friend void repeat(Task* t, unsigned millis);
00045 virtual void run();
00046
00047 void begin();
00048 };
00049
00051 void fork(Task *t);
00052
00054 void repeat(Task *t, unsigned millis);
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070 }
00071
00072 }