2019-03-24 00:15:29 +00:00
|
|
|
#include "wsfs/adapter/impl/time/timer_intern.h"
|
|
|
|
#include "wsfs/adapter/impl/time/timeout_manager_intern.h"
|
2019-02-09 18:02:53 +00:00
|
|
|
|
|
|
|
#include <stddef.h>
|
|
|
|
#include <string.h>
|
|
|
|
|
2019-03-24 02:25:29 +00:00
|
|
|
void timer_init(
|
|
|
|
struct timer * timer,
|
|
|
|
struct timeout_manager * manager)
|
2019-02-09 18:02:53 +00:00
|
|
|
{
|
|
|
|
timer->manager = manager;
|
|
|
|
timer->timeout = 0;
|
|
|
|
timer->timeout_handler = NULL;
|
|
|
|
timer->user_data = NULL;
|
|
|
|
timer->prev = NULL;
|
|
|
|
timer->next = NULL;
|
|
|
|
}
|
|
|
|
|
2019-03-24 02:25:29 +00:00
|
|
|
void timer_cleanup(
|
|
|
|
struct timer * timer)
|
2019-02-09 18:02:53 +00:00
|
|
|
{
|
2019-03-24 02:25:29 +00:00
|
|
|
memset(timer, 0, sizeof(struct timer));
|
2019-02-09 18:02:53 +00:00
|
|
|
}
|
|
|
|
|
2019-03-24 02:25:29 +00:00
|
|
|
void timer_start(
|
|
|
|
struct timer * timer,
|
|
|
|
timepoint absolute_timeout,
|
|
|
|
timer_timeout_fn * handler,
|
2019-02-09 18:02:53 +00:00
|
|
|
void * user_data)
|
|
|
|
{
|
|
|
|
timer->timeout = absolute_timeout;
|
|
|
|
timer->timeout_handler = handler;
|
|
|
|
timer->user_data = user_data;
|
|
|
|
|
2019-03-24 02:25:29 +00:00
|
|
|
timeout_manager_addtimer(timer->manager, timer);
|
2019-02-09 18:02:53 +00:00
|
|
|
}
|
|
|
|
|
2019-03-24 02:25:29 +00:00
|
|
|
void timer_cancel(
|
|
|
|
struct timer * timer)
|
2019-02-09 18:02:53 +00:00
|
|
|
{
|
2019-03-24 02:25:29 +00:00
|
|
|
timeout_manager_removetimer(timer->manager, timer);
|
2019-02-09 18:02:53 +00:00
|
|
|
|
|
|
|
timer->timeout = 0;
|
|
|
|
timer->timeout_handler = NULL;
|
|
|
|
timer->user_data = NULL;
|
|
|
|
}
|
|
|
|
|
2019-03-24 02:25:29 +00:00
|
|
|
bool timer_is_timeout(
|
|
|
|
struct timer * timer)
|
2019-02-09 18:02:53 +00:00
|
|
|
{
|
2019-03-24 02:25:29 +00:00
|
|
|
return timepoint_is_elapsed(timer->timeout);
|
2019-02-09 18:02:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2019-03-24 02:25:29 +00:00
|
|
|
void timer_trigger(
|
|
|
|
struct timer * timer)
|
2019-02-09 18:02:53 +00:00
|
|
|
{
|
|
|
|
if (NULL != timer->timeout_handler)
|
|
|
|
{
|
|
|
|
timer->prev = NULL;
|
|
|
|
timer->next = NULL;
|
|
|
|
|
|
|
|
timer->timeout_handler(timer);
|
|
|
|
}
|
|
|
|
}
|