]> git.itanic.dy.fi Git - rrdd/blob - scheduler.c
Merge branch 'master' into itanic
[rrdd] / scheduler.c
1 #include "scheduler.h"
2 #include "process.h"
3
4 /*
5  * Walk through the database list and return the first database which
6  * last update is too far in past
7  */
8 struct rrd_database *get_outdated_db(struct rrd_database **dblist)
9 {
10         int i;
11         time_t now = time(0);
12
13         for (i = 0; dblist[i]; i++) {
14                 if ((dblist[i]->last_update + dblist[i]->interval) - now <= 0)
15                         return dblist[i];
16         }
17
18         /* Nothing to update this time, return null */
19         return NULL;
20 }
21
22 /*
23  * See how long we may sleep until it is required to run an update
24  * again
25  */
26
27 int get_next_update(struct rrd_database **dblist)
28 {
29         int i, sleeptime = 0, diff;
30         time_t now = time(0);
31
32         for (i = 0; dblist[i]; i++) {
33                 diff = dblist[i]->last_update + dblist[i]->interval - now;
34                 if (!sleeptime)
35                         sleeptime = diff;
36                 if (sleeptime > diff)
37                         sleeptime = diff;
38                 if (sleeptime <= 0)
39                         return 0;
40         }
41
42         return sleeptime;
43 }