job scheduler works with run once and run periodic schedules. Stop logic is not fully thought through.
Dependents: JobSchedulerDemo Borsch
jobService.cpp@9:ee21cd055a97, 2017-07-13 (annotated)
- Committer:
- sgnezdov
- Date:
- Thu Jul 13 20:01:07 2017 +0000
- Revision:
- 9:ee21cd055a97
- Parent:
- 0:806403f3d0d1
- Child:
- 10:8cff30b5b90d
moved from printf to tracing
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sgnezdov | 0:806403f3d0d1 | 1 | #include "jobService.h" |
sgnezdov | 0:806403f3d0d1 | 2 | |
sgnezdov | 0:806403f3d0d1 | 3 | namespace JobScheduler { |
sgnezdov | 0:806403f3d0d1 | 4 | |
sgnezdov | 0:806403f3d0d1 | 5 | bool JobType::AscendingExcl(JobType *j2) |
sgnezdov | 0:806403f3d0d1 | 6 | { |
sgnezdov | 0:806403f3d0d1 | 7 | return this->_jobTypeID < j2->_jobTypeID; |
sgnezdov | 0:806403f3d0d1 | 8 | } |
sgnezdov | 0:806403f3d0d1 | 9 | |
sgnezdov | 0:806403f3d0d1 | 10 | bool JobType::IsEqual(JobType *j2) |
sgnezdov | 0:806403f3d0d1 | 11 | { |
sgnezdov | 0:806403f3d0d1 | 12 | return this->_jobTypeID == j2->_jobTypeID; |
sgnezdov | 0:806403f3d0d1 | 13 | } |
sgnezdov | 0:806403f3d0d1 | 14 | |
sgnezdov | 0:806403f3d0d1 | 15 | bool jtAscending(JobType *j1, JobType *j2) |
sgnezdov | 0:806403f3d0d1 | 16 | { |
sgnezdov | 0:806403f3d0d1 | 17 | return j1->AscendingExcl(j2); |
sgnezdov | 0:806403f3d0d1 | 18 | } |
sgnezdov | 0:806403f3d0d1 | 19 | |
sgnezdov | 0:806403f3d0d1 | 20 | bool jtIsEqual(JobType *j1, JobType *j2) |
sgnezdov | 0:806403f3d0d1 | 21 | { |
sgnezdov | 0:806403f3d0d1 | 22 | return j1->IsEqual(j2); |
sgnezdov | 0:806403f3d0d1 | 23 | } |
sgnezdov | 0:806403f3d0d1 | 24 | |
sgnezdov | 9:ee21cd055a97 | 25 | Error JobService::Register(int jobTypeID, jobFunc *job, void *context) |
sgnezdov | 0:806403f3d0d1 | 26 | { |
sgnezdov | 9:ee21cd055a97 | 27 | JobType *jt = new JobType(jobTypeID, job, context); |
sgnezdov | 0:806403f3d0d1 | 28 | node<JobType> *tmp = _jobs.insertOrdered(jt, jtAscending); |
sgnezdov | 0:806403f3d0d1 | 29 | if (NULL == tmp) { |
sgnezdov | 0:806403f3d0d1 | 30 | error("[JobService::Register] failed to insertOrdered"); |
sgnezdov | 0:806403f3d0d1 | 31 | return Error(1); |
sgnezdov | 0:806403f3d0d1 | 32 | } |
sgnezdov | 0:806403f3d0d1 | 33 | return NoError; |
sgnezdov | 0:806403f3d0d1 | 34 | } |
sgnezdov | 0:806403f3d0d1 | 35 | |
sgnezdov | 9:ee21cd055a97 | 36 | JobType* JobService::GetJob(int jobTypeID) |
sgnezdov | 0:806403f3d0d1 | 37 | { |
sgnezdov | 9:ee21cd055a97 | 38 | JobType search = JobType(jobTypeID, NULL, NULL); |
sgnezdov | 0:806403f3d0d1 | 39 | node<JobType> *found = _jobs.pop(&search, jtIsEqual); |
sgnezdov | 0:806403f3d0d1 | 40 | if (found == NULL) { |
sgnezdov | 0:806403f3d0d1 | 41 | return NULL; |
sgnezdov | 0:806403f3d0d1 | 42 | } |
sgnezdov | 9:ee21cd055a97 | 43 | return found->data; |
sgnezdov | 0:806403f3d0d1 | 44 | } |
sgnezdov | 0:806403f3d0d1 | 45 | |
sgnezdov | 0:806403f3d0d1 | 46 | } // end of namespace |