diff options
author | Martin Willi <martin@strongswan.org> | 2006-10-24 08:46:17 +0000 |
---|---|---|
committer | Martin Willi <martin@strongswan.org> | 2006-10-24 08:46:17 +0000 |
commit | 55bbff11ec96f74b27afc36dd8ca3e34ff425b40 (patch) | |
tree | 9d0ff1aad70e01718405a8da314d22a86b072947 /src/charon/queues/event_queue.c | |
parent | 5c4cc9a4e328d86867959dec0e082f7e4f098a6e (diff) | |
download | strongswan-55bbff11ec96f74b27afc36dd8ca3e34ff425b40.tar.bz2 strongswan-55bbff11ec96f74b27afc36dd8ca3e34ff425b40.tar.xz |
linked list cleanups
added list methods invoke(), destroy_offset(), destroy_function()
simplified list destruction when destroying its items
Diffstat (limited to 'src/charon/queues/event_queue.c')
-rw-r--r-- | src/charon/queues/event_queue.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/charon/queues/event_queue.c b/src/charon/queues/event_queue.c index 10f139e7a..3a5b21039 100644 --- a/src/charon/queues/event_queue.c +++ b/src/charon/queues/event_queue.c @@ -48,6 +48,15 @@ struct event_t { job_t * job; }; +/** + * destroy an event and its job + */ +static void event_destroy(event_t *event) +{ + event->job->destroy(event->job); + free(event); +} + typedef struct private_event_queue_t private_event_queue_t; /** @@ -262,15 +271,7 @@ static void add_relative(event_queue_t *this, job_t *job, u_int32_t ms) */ static void event_queue_destroy(private_event_queue_t *this) { - event_t *event; - while (this->list->remove_last(this->list, (void**)&event) == SUCCESS) - { - event->job->destroy(event->job); - free(event); - } - this->list->destroy(this->list); - pthread_mutex_destroy(&(this->mutex)); - pthread_cond_destroy(&(this->condvar)); + this->list->destroy_function(this->list, (void*)event_destroy); free(this); } |