1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-16 00:00:02 +01:00
VILLASnode/lib/hooks/restart.c

56 lines
1.2 KiB
C
Raw Normal View History

/** Path restart hook.
*
* @author Steffen Vogel <stvogel@eonerc.rwth-aachen.de>
* @copyright 2017, Institute for Automation of Complex Power Systems, EONERC
*********************************************************************************/
/** @addtogroup hooks Hook functions
* @{
*/
#include "hook.h"
#include "plugin.h"
#include "path.h"
2017-03-27 12:26:11 +02:00
static int restart_read(struct hook *h, struct sample *smps[], size_t *cnt)
{
2017-03-27 12:26:11 +02:00
assert(h->path);
for (int i = 0; i < *cnt; i++) {
h->last = smps[i];
if (h->prev) {
if (h->last->sequence == 0 &&
h->prev->sequence <= UINT32_MAX - 32) {
warn("Simulation for path %s restarted (prev->seq=%u, current->seq=%u)",
2017-03-27 12:26:11 +02:00
path_name(h->path), h->prev->sequence, h->last->sequence);
/* Run restart hooks */
for (size_t i = 0; i < list_length(&h->path->hooks); i++) {
struct hook *k = list_at(&h->path->hooks, i);
hook_restart(k);
}
}
}
2017-03-27 12:26:11 +02:00
h->prev = h->last;
}
2017-03-27 12:26:11 +02:00
return 0;
}
static struct plugin p = {
.name = "restart",
.description = "Call restart hooks for current path",
.type = PLUGIN_TYPE_HOOK,
.hook = {
.priority = 1,
2017-03-27 12:26:11 +02:00
.builtin = true,
.read = restart_read
}
};
REGISTER_PLUGIN(&p)
/** @} */