diff options
Diffstat (limited to 'src/block.c')
| -rw-r--r-- | src/block.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/block.c b/src/block.c new file mode 100644 index 0000000..442e753 --- /dev/null +++ b/src/block.c @@ -0,0 +1,23 @@ +#include "block.h" +#include "util.h" +#include "any_log.h" + +void block_update(block_t *block) +{ + if (block->update_cb != NULL) { + struct timespec now, diff; + timespec_get(&now, TIME_UTC); + diff = timespec_diff(block->update_last, now); + + if (timespec_greater(diff, block->update_interval)) { + block->update_cb(block); + block->update_last = now; + log_debug("Updated block"); + } + } + + if (block->type == BLOCK_GROUP) { + for (int i = 0; i < block->group.n_children; i++) + block_update(&block->group.children[i]); + } +} |
