OpenDNSSEC-enforcer  2.0.3
schedule.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2009 NLNet Labs. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
14  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
17  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
19  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
21  * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
22  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
23  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  *
25  */
26 
32 #ifndef SCHEDULER_SCHEDULE_H
33 #define SCHEDULER_SCHEDULE_H
34 
35 #include "config.h"
36 
37 #include <time.h>
38 #include <ldns/ldns.h>
39 #include <pthread.h>
40 
41 #include "scheduler/task.h"
42 #include "status.h"
43 
49  ldns_rbtree_t* tasks;
50  ldns_rbtree_t* tasks_by_name;
51  pthread_cond_t schedule_cond;
52  pthread_mutex_t schedule_lock;
53 };
54 
61 
67 void schedule_cleanup(schedule_type* schedule);
68 
73 void schedule_flush(schedule_type* schedule);
74 
80 int schedule_flush_type(schedule_type* schedule, task_id id);
81 
86 void schedule_purge(schedule_type* schedule);
87 
95 ods_status schedule_task(schedule_type* schedule, task_type* task);
96 
107 
116 
123 time_t schedule_time_first(schedule_type* schedule);
124 
130 size_t schedule_taskcount(schedule_type* schedule);
131 
138 void schedule_print(FILE* out, schedule_type* schedule);
139 
143 void schedule_release_all(schedule_type* schedule);
144 
145 #endif /* SCHEDULER_SCHEDULE_H */
size_t schedule_taskcount(schedule_type *schedule)
Definition: schedule.c:266
pthread_mutex_t schedule_lock
Definition: schedule.h:52
void schedule_print(FILE *out, schedule_type *schedule)
time_t schedule_time_first(schedule_type *schedule)
Definition: schedule.c:246
pthread_cond_t schedule_cond
Definition: schedule.h:51
task_type * schedule_pop_task(schedule_type *schedule)
Definition: schedule.c:370
void schedule_flush(schedule_type *schedule)
Definition: schedule.c:273
enum task_id_enum task_id
Definition: task.h:53
schedule_type * schedule_create(void)
Definition: schedule.c:189
void schedule_cleanup(schedule_type *schedule)
Definition: schedule.c:220
ldns_rbtree_t * tasks_by_name
Definition: schedule.h:50
ods_status schedule_task(schedule_type *schedule, task_type *task)
Definition: schedule.c:401
ldns_rbtree_t * tasks
Definition: schedule.h:49
void schedule_purge(schedule_type *schedule)
Definition: schedule.c:342
void schedule_release_all(schedule_type *schedule)
Definition: schedule.c:475
int schedule_flush_type(schedule_type *schedule, task_id id)
Definition: schedule.c:298
task_type * schedule_pop_first_task(schedule_type *schedule)
Definition: schedule.c:390