OpenDNSSEC-enforcer  2.0.3
task.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_TASK_H
33 #define SCHEDULER_TASK_H
34 
35 #include "config.h"
36 #include "status.h"
37 #include "db/db_connection.h"
38 
39 #include <ldns/ldns.h>
40 
42  TASK_NONE = 0,
43 /* tasks defined by signer */
50 /* tasks registerd dynamically return an id starting at TASK_DYNAMIC_FIRST */
52 };
53 typedef enum task_id_enum task_id;
54 
58 typedef struct task_struct task_type;
59 struct task_struct {
63  time_t when;
64  time_t backoff;
65  int flush;
66  char* who;
67  ldns_rdf* dname;
68  void* context;
69  task_type* (*how)(task_type*task);
70  task_type* (*clean_context)(task_type*task);
71  db_connection_t *dbconn; /* short lived */
72 };
73 
74 typedef task_type* (*how_type)(task_type*task);
75 
85 task_id task_register(const char *short_name, const char *long_name,
86  how_type how);
87 
97 task_type* task_create(task_id what_id, time_t when, const char* who,
98  const char* what, void* context, how_type clean_context);
99 
105 void task_cleanup(task_type* task);
106 
114 int task_compare(const void* a, const void* b);
115 
123 int task_compare_name(const void* a, const void* b);
124 
132 char* task2str(task_type* task, char* buftask);
133 
140 const char* task_what2str(int taskid);
141 
147 const char* task_who2str(const char* who);
148 
154 void task_log(task_type* task);
155 
163 
164 bool task_id_from_long_name(const char *long_name, task_id *pwhat);
165 
166 #endif /* SCHEDULER_TASK_H */
task_type * task_perform(task_type *task)
Definition: task.c:292
Definition: task.h:42
time_t when
Definition: task.h:63
task_id interrupt
Definition: task.h:61
int task_compare_name(const void *a, const void *b)
Definition: task.c:195
char * who
Definition: task.h:66
int flush
Definition: task.h:65
time_t backoff
Definition: task.h:64
void * context
Definition: task.h:68
task_type * task_create(task_id what_id, time_t when, const char *who, const char *what, void *context, how_type clean_context)
Definition: task.c:110
Definition: task.h:47
task_type *(* how)(task_type *task)
Definition: task.h:69
enum task_id_enum task_id
Definition: task.h:53
ldns_rdf * dname
Definition: task.h:67
Definition: task.h:45
const char * task_who2str(const char *who)
Definition: task.c:240
const char * task_what2str(int taskid)
Definition: task.c:212
task_id halted
Definition: task.h:62
db_connection_t * dbconn
Definition: task.h:71
task_id_enum
Definition: task.h:41
bool task_id_from_long_name(const char *long_name, task_id *pwhat)
Definition: task.c:53
task_type *(* clean_context)(task_type *task)
Definition: task.h:70
void task_cleanup(task_type *task)
Definition: task.c:147
task_id what
Definition: task.h:60
void task_log(task_type *task)
task_id task_register(const char *short_name, const char *long_name, how_type how)
Definition: task.c:82
int task_compare(const void *a, const void *b)
Definition: task.c:170
char * task2str(task_type *task, char *buftask)
Definition: task.c:254
task_type *(* how_type)(task_type *task)
Definition: task.h:74