diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2019-09-10 18:02:33 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2019-09-10 18:02:33 +0100 |
commit | 952850a4741c0e919879da7e16715d59c40eacca (patch) | |
tree | 5690c0f314cdd6883761163b1e14e3c3967cedd2 /src/libserver | |
parent | 3d97675cf4361d30dd541eff5b6b13c57cf36b80 (diff) | |
download | rspamd-952850a4741c0e919879da7e16715d59c40eacca.tar.gz rspamd-952850a4741c0e919879da7e16715d59c40eacca.zip |
[Project] Add heartbeat events
Diffstat (limited to 'src/libserver')
-rw-r--r-- | src/libserver/rspamd_control.c | 4 | ||||
-rw-r--r-- | src/libserver/rspamd_control.h | 8 | ||||
-rw-r--r-- | src/libserver/worker_util.c | 4 |
3 files changed, 16 insertions, 0 deletions
diff --git a/src/libserver/rspamd_control.c b/src/libserver/rspamd_control.c index 6c558629c..2ebdbc4d6 100644 --- a/src/libserver/rspamd_control.c +++ b/src/libserver/rspamd_control.c @@ -912,6 +912,10 @@ rspamd_srv_handler (EV_P_ ev_io *w, int revents) rdata->rep.reply.on_fork.status = 0; rspamd_control_handle_on_fork (&cmd, srv); break; + case RSPAMD_SRV_HEARTBEAT: + worker->hb.last_event = ev_time (); + rdata->rep.reply.heartbeat.status = 0; + break; default: msg_err ("unknown command type: %d", cmd.type); break; diff --git a/src/libserver/rspamd_control.h b/src/libserver/rspamd_control.h index 08d3946c7..87e5e3186 100644 --- a/src/libserver/rspamd_control.h +++ b/src/libserver/rspamd_control.h @@ -46,6 +46,7 @@ enum rspamd_srv_type { RSPAMD_SRV_MONITORED_CHANGE, RSPAMD_SRV_LOG_PIPE, RSPAMD_SRV_ON_FORK, + RSPAMD_SRV_HEARTBEAT, }; enum rspamd_log_pipe_type { @@ -157,6 +158,10 @@ struct rspamd_srv_command { child_dead, } state; } on_fork; + struct { + guint status; + /* TODO: add more fields */ + } heartbeat; } cmd; }; @@ -179,6 +184,9 @@ struct rspamd_srv_reply { struct { gint status; } on_fork; + struct { + gint status; + } heartbeat; } reply; }; diff --git a/src/libserver/worker_util.c b/src/libserver/worker_util.c index 47812ded1..56fdd70c1 100644 --- a/src/libserver/worker_util.c +++ b/src/libserver/worker_util.c @@ -692,7 +692,11 @@ static void rspamd_worker_heartbeat_cb (EV_P_ ev_timer *w, int revents) { struct rspamd_worker *wrk = (struct rspamd_worker *)w->data; + struct rspamd_srv_command cmd; + memset (&cmd, 0, sizeof (cmd)); + cmd.type = RSPAMD_SRV_HEARTBEAT; + rspamd_srv_send_command (wrk, EV_A, &cmd, -1, NULL, NULL); } static void |