#ifndef PERIOD_SERVICE_H
#define PERIOD_SERVICE_H
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "dy_common.h"
#include "dy_pp.h"
#include "ipc_session.h"

typedef struct {
    int interval;  //ms
    long long last_poll;
    char key[128];
    pp_regulate_signal_t *rs;
    bool started; // 已经开始周期查询了
} period_msg_t;

typedef struct {
    int size;
    int max_size;
    int index;
    period_msg_t arg[];
} period_service_t;

period_msg_t * period_msg_next(period_service_t *period_service);
void period_msg_init(period_service_t **period_service, int size);
int period_msg_add(period_service_t *period_service, period_msg_t *new);
int period_services_retrigger(ipc_session_t *session, period_service_t *period, nodes_cfg_table_t *nodes_cfg_table, template_table_t *template_table, gw_port_e *ports, int cnt);
int period_services_trigger(ipc_session_t *session, period_service_t *period, nodes_cfg_table_t *nodes_cfg_table, template_table_t *template_table, gw_port_e *ports, int cnt);
int period_services_retrigger_by_appkey(ipc_session_t *session, period_service_t *period, nodes_cfg_table_t *nodes_cfg_table, template_table_t *template_table, char *appkey);
int period_services_trigger_by_appkey(ipc_session_t *session, period_service_t *period, nodes_cfg_table_t *nodes_cfg_table, template_table_t *template_table, char *appkey);
#endif // PERIOD_SERVICE_H
