Software /
code /
prosody-modules
Diff
mod_host_status_heartbeat/mod_host_status_heartbeat.lua @ 2219:5fcf9d558250
Three new modules: mod_host_status_check, mod_host_status_heartbeat and mod_http_host_status_check
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Tue, 28 Jun 2016 22:33:13 +0100 |
child | 2220:7f955f92bbbb |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_host_status_heartbeat/mod_host_status_heartbeat.lua Tue Jun 28 22:33:13 2016 +0100 @@ -0,0 +1,28 @@ +local st = require "util.stanza"; +local time = require "socket".gettime; + +local heartbeat_interval = module:get_option_number("status_check_heartbeat_interval", 5); +local heartbeat_mode = module:get_option_string("status_check_heartbeat_mode", "remote"); + +local local_heartbeats = module:shared("/*/host_status_check/heartbeats"); + +local heartbeat_methods = { + ["local"] = function() + module:log("debug", "Local heartbeat"); + local_heartbeats[module.host] = time(); + return heartbeat_interval; + end; + + ["remote"] = function () + module:fire_event("route/remote", { + origin = prosody.hosts[module.host]; + stanza = st.stanza("heartbeat", { xmlns = "xmpp:prosody.im/heartbeat" }); + }); + return heartbeat_interval; + end; +} + +local send_heartbeat = assert(heartbeat_methods[heartbeat_mode], "Unknown heartbeat_mode: "..heartbeat_mode); + +--FIXME: Commented for testing!!! :) +module:add_timer(0, send_heartbeat);