scheduler: Add method to remove all scheduled jobs

References #840.
This commit is contained in:
Tobias Brunner
2015-03-09 15:57:57 +01:00
parent 1bfa5e0cac
commit 11ac1dff9c
2 changed files with 21 additions and 5 deletions
+15 -4
View File
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2008 Tobias Brunner
* Copyright (C) 2008-2015 Tobias Brunner
* Copyright (C) 2005-2006 Martin Willi
* Copyright (C) 2005 Jan Hutter
* Hochschule fuer Technik Rapperswil
@@ -300,16 +300,26 @@ METHOD(scheduler_t, schedule_job_ms, void,
schedule_job_tv(this, job, tv);
}
METHOD(scheduler_t, destroy, void,
METHOD(scheduler_t, flush, void,
private_scheduler_t *this)
{
event_t *event;
this->condvar->destroy(this->condvar);
this->mutex->destroy(this->mutex);
this->mutex->lock(this->mutex);
while ((event = remove_event(this)) != NULL)
{
event_destroy(event);
}
this->condvar->signal(this->condvar);
this->mutex->unlock(this->mutex);
}
METHOD(scheduler_t, destroy, void,
private_scheduler_t *this)
{
flush(this);
this->condvar->destroy(this->condvar);
this->mutex->destroy(this->mutex);
free(this->heap);
free(this);
}
@@ -328,6 +338,7 @@ scheduler_t * scheduler_create()
.schedule_job = _schedule_job,
.schedule_job_ms = _schedule_job_ms,
.schedule_job_tv = _schedule_job_tv,
.flush = _flush,
.destroy = _destroy,
},
.heap_size = HEAP_SIZE_DEFAULT,
+6 -1
View File
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2009 Tobias Brunner
* Copyright (C) 2009-2015 Tobias Brunner
* Copyright (C) 2005-2007 Martin Willi
* Copyright (C) 2005 Jan Hutter
* Hochschule fuer Technik Rapperswil
@@ -114,6 +114,11 @@ struct scheduler_t {
*/
u_int (*get_job_load) (scheduler_t *this);
/**
* Remove all scheduled jobs.
*/
void (*flush)(scheduler_t *this);
/**
* Destroys a scheduler object.
*/