Skip to content
Snippets Groups Projects
Commit 41187415 authored by Jan Včelák's avatar Jan Včelák :rocket:
Browse files

events: write persistent events from events API

parent 3c888810
Branches
Tags
No related merge requests found
......@@ -18,12 +18,14 @@
#include <time.h>
#include "common-knot/evsched.h"
#include "common/namedb/namedb.h"
#include "knot/server/server.h"
#include "knot/worker/pool.h"
#include "knot/zone/zone.h"
#include "knot/zone/events/events.h"
#include "knot/zone/events/handlers.h"
#include "knot/zone/events/replan.h"
#include "knot/zone/timers.h"
/* ------------------------- internal timers -------------------------------- */
......@@ -232,7 +234,8 @@ int zone_events_init(zone_t *zone)
return KNOT_EOK;
}
int zone_events_setup(zone_t *zone, worker_pool_t *workers, evsched_t *scheduler)
int zone_events_setup(struct zone_t *zone, worker_pool_t *workers,
evsched_t *scheduler, knot_namedb_t *timers_db)
{
if (!zone || !workers || !scheduler) {
return KNOT_EINVAL;
......@@ -246,6 +249,7 @@ int zone_events_setup(zone_t *zone, worker_pool_t *workers, evsched_t *scheduler
zone->events.event = event;
zone->events.pool = workers;
zone->events.timers_db = timers_db;
return KNOT_EOK;
}
......@@ -409,3 +413,16 @@ void zone_events_replan_ddns(struct zone_t *zone, const struct zone_t *old_zone)
replan_update(zone, (zone_t *)old_zone);
}
}
int zone_events_write_persistent(zone_t *zone)
{
if (!zone) {
return KNOT_EINVAL;
}
if (zone->events.timers_db == NULL) {
return KNOT_EOK;
}
return write_zone_timers(zone->events.timers_db, zone);
}
......@@ -20,6 +20,7 @@
#include <stdbool.h>
#include "common-knot/evsched.h"
#include "common/namedb/namedb.h"
#include "knot/worker/pool.h"
/* Timer special values. */
......@@ -51,6 +52,7 @@ typedef struct zone_events {
event_t *event; //!< Scheduler event.
worker_pool_t *pool; //!< Server worker pool.
knot_namedb_t *timers_db; //!< Persistent zone timers database.
task_t task; //!< Event execution context.
time_t time[ZONE_EVENT_COUNT]; //!< Event execution times.
......@@ -74,11 +76,12 @@ int zone_events_init(struct zone_t *zone);
* \param zone Zone to setup.
* \param workers Worker thread pool.
* \param scheduler Event scheduler.
* \param timers_db Persistent timers database. Can be NULL.
*
* \return KNOT_E*
*/
int zone_events_setup(struct zone_t *zone, worker_pool_t *workers,
evsched_t *scheduler);
evsched_t *scheduler, knot_namedb_t *timers_db);
/*!
* \brief Deinitialize zone events.
......@@ -185,3 +188,10 @@ void zone_events_update(struct zone_t *zone, struct zone_t *old_zone);
* \param old_zone Zone with old config.
*/
void zone_events_replan_ddns(struct zone_t *zone, const struct zone_t *old_zone);
/*!
* \brief Write persistent timers to timers database.
*
* \return KNOT_E*
*/
int zone_events_write_persistent(struct zone_t *zone);
......@@ -86,7 +86,7 @@ int main(void)
r = zone_events_init(&zone);
ok(r == KNOT_EOK, "zone events init");
r = zone_events_setup(&zone, pool, &sched);
r = zone_events_setup(&zone, pool, &sched, NULL);
ok(r == KNOT_EOK, "zone events setup");
test_scheduling(&zone);
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment