diff options
| author | Mike Buland <eichlan@xagasoft.com> | 2010-10-06 07:01:28 +0000 |
|---|---|---|
| committer | Mike Buland <eichlan@xagasoft.com> | 2010-10-06 07:01:28 +0000 |
| commit | 313e28df2a8776c82f5493aef6fe44ad40f1935a (patch) | |
| tree | 219d5ff889b85773a6670fdff28c2043b14a1f09 /src/minicron.h | |
| parent | 0bb8c5962e93fae4a2542d57efe8e87d30d8f0fb (diff) | |
| download | libbu++-313e28df2a8776c82f5493aef6fe44ad40f1935a.tar.gz libbu++-313e28df2a8776c82f5493aef6fe44ad40f1935a.tar.bz2 libbu++-313e28df2a8776c82f5493aef6fe44ad40f1935a.tar.xz libbu++-313e28df2a8776c82f5493aef6fe44ad40f1935a.zip | |
Changed the Bu::Heap to allow iteration, and added lots of cool features to
Bu::MiniCron.
Diffstat (limited to 'src/minicron.h')
| -rw-r--r-- | src/minicron.h | 51 |
1 files changed, 44 insertions, 7 deletions
diff --git a/src/minicron.h b/src/minicron.h index 7475020..b045e79 100644 --- a/src/minicron.h +++ b/src/minicron.h | |||
| @@ -66,6 +66,12 @@ namespace Bu | |||
| 66 | *@returns The timestamp that the next job will execute at. | 66 | *@returns The timestamp that the next job will execute at. |
| 67 | */ | 67 | */ |
| 68 | virtual time_t getNextRun(); | 68 | virtual time_t getNextRun(); |
| 69 | |||
| 70 | /** | ||
| 71 | * Tells you the time the job matching jid will run next. | ||
| 72 | *@returns The timestamp that the job jid will next run. | ||
| 73 | */ | ||
| 74 | virtual time_t getNextRun( JobId jid ); | ||
| 69 | 75 | ||
| 70 | /** | 76 | /** |
| 71 | * Call this regularly to execute all jobs that should be executed. | 77 | * Call this regularly to execute all jobs that should be executed. |
| @@ -83,7 +89,8 @@ namespace Bu | |||
| 83 | * JobId which can be used at a later time to control the execution of | 89 | * JobId which can be used at a later time to control the execution of |
| 84 | * the job. | 90 | * the job. |
| 85 | */ | 91 | */ |
| 86 | virtual JobId addJob( CronSignal sigJob, const Timer &t ); | 92 | virtual JobId addJob( const Bu::FString &sName, CronSignal sigJob, |
| 93 | const Timer &t ); | ||
| 87 | 94 | ||
| 88 | /** | 95 | /** |
| 89 | * Add a job for one time scheduling. Pass in a slot to signal, and a | 96 | * Add a job for one time scheduling. Pass in a slot to signal, and a |
| @@ -91,7 +98,8 @@ namespace Bu | |||
| 91 | * function returns a JobId which can be used at a later time to control | 98 | * function returns a JobId which can be used at a later time to control |
| 92 | * the execution of the job. | 99 | * the execution of the job. |
| 93 | */ | 100 | */ |
| 94 | virtual JobId addJobOnce( CronSignal sigJob, const Timer &t ); | 101 | virtual JobId addJobOnce( const Bu::FString &sName, CronSignal sigJob, |
| 102 | const Timer &t ); | ||
| 95 | 103 | ||
| 96 | /** | 104 | /** |
| 97 | * Remove a job, preventing all future runs of the job. If there is no | 105 | * Remove a job, preventing all future runs of the job. If there is no |
| @@ -102,6 +110,22 @@ namespace Bu | |||
| 102 | */ | 110 | */ |
| 103 | virtual void removeJob( JobId jid ); | 111 | virtual void removeJob( JobId jid ); |
| 104 | 112 | ||
| 113 | class JobInfo | ||
| 114 | { | ||
| 115 | public: | ||
| 116 | JobInfo( const Bu::FString &sName, JobId jid, time_t tNext ); | ||
| 117 | virtual ~JobInfo(); | ||
| 118 | |||
| 119 | bool operator<( const JobInfo &rhs ) const; | ||
| 120 | |||
| 121 | Bu::FString sName; | ||
| 122 | JobId jid; | ||
| 123 | time_t tNext; | ||
| 124 | }; | ||
| 125 | typedef Bu::List<JobInfo> JobInfoList; | ||
| 126 | |||
| 127 | JobInfoList getJobInfo(); | ||
| 128 | |||
| 105 | /** | 129 | /** |
| 106 | * The baseclass for timer/schedulers for MiniCron jobs. Classes that | 130 | * The baseclass for timer/schedulers for MiniCron jobs. Classes that |
| 107 | * inherit from this are used to determine when jobs will run and at | 131 | * inherit from this are used to determine when jobs will run and at |
| @@ -201,7 +225,7 @@ namespace Bu | |||
| 201 | { | 225 | { |
| 202 | friend class Bu::MiniCron; | 226 | friend class Bu::MiniCron; |
| 203 | private: | 227 | private: |
| 204 | Job( JobId jid, bool bRepeat=true ); | 228 | Job( const Bu::FString &sName, JobId jid, bool bRepeat=true ); |
| 205 | virtual ~Job(); | 229 | virtual ~Job(); |
| 206 | 230 | ||
| 207 | public: | 231 | public: |
| @@ -215,7 +239,7 @@ namespace Bu | |||
| 215 | /** | 239 | /** |
| 216 | * Get the time this job will next run. | 240 | * Get the time this job will next run. |
| 217 | */ | 241 | */ |
| 218 | time_t getNextRun(); | 242 | time_t getNextRun() const; |
| 219 | 243 | ||
| 220 | /** | 244 | /** |
| 221 | * Compute the time this job will next run. | 245 | * Compute the time this job will next run. |
| @@ -243,20 +267,33 @@ namespace Bu | |||
| 243 | /** | 267 | /** |
| 244 | * Get the unique ID of this job. | 268 | * Get the unique ID of this job. |
| 245 | */ | 269 | */ |
| 246 | JobId getId(); | 270 | JobId getId() const; |
| 247 | 271 | ||
| 248 | /** | 272 | /** |
| 249 | * Get the timestamp this job was created. | 273 | * Get the timestamp this job was created. |
| 250 | */ | 274 | */ |
| 251 | time_t getTimeCreated(); | 275 | time_t getTimeCreated() const; |
| 252 | 276 | ||
| 253 | /** | 277 | /** |
| 254 | * Get the current run count of this job, how many times it has been | 278 | * Get the current run count of this job, how many times it has been |
| 255 | * executed. This is incremented before the slot is signaled. | 279 | * executed. This is incremented before the slot is signaled. |
| 256 | */ | 280 | */ |
| 257 | int getRunCount(); | 281 | int getRunCount() const; |
| 282 | |||
| 283 | /** | ||
| 284 | * Get the next time that this job will be run. Certain timers may | ||
| 285 | * have the ability to delay job executions, so this is the earliest | ||
| 286 | * time that the job may run. | ||
| 287 | */ | ||
| 288 | time_t getNextRunTime() const; | ||
| 289 | |||
| 290 | /** | ||
| 291 | * Gets the name that was set when the job was created. | ||
| 292 | */ | ||
| 293 | Bu::FString getName() const; | ||
| 258 | 294 | ||
| 259 | private: | 295 | private: |
| 296 | Bu::FString sName; | ||
| 260 | CronSignal sigJob; | 297 | CronSignal sigJob; |
| 261 | time_t tNextRun; | 298 | time_t tNextRun; |
| 262 | Timer *pTimer; | 299 | Timer *pTimer; |
