1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| require "functions" local skynet = require "skynet" local syslog = require "syslog"
local traceback = debug.traceback local IntervalTime = 5 * 100 local serTab = {}
local CMD = {} function CMD.register(source, _serName) serTab[source] = _serName end
local function serviceDump(_serName) syslog.errf("--- Error: service 【%s】 dump!", _serName) end
local function callService(_addr) skynet.call(_addr, "lua", "heart_beat") end
local function heartBeatScheduler() for k,v in pairs(serTab) do local ok, _ = xpcall (callService, traceback, k) if not ok then serviceDump(v) serTab[k] = nil else end end
skynet.timeout(IntervalTime, heartBeatScheduler) end
skynet.start (function () skynet.timeout(IntervalTime, heartBeatScheduler) skynet.dispatch ("lua", function (_, source, command, ...) local f = CMD[command] if not f then syslog.warningf ("unhandled message(%s)", command) return skynet.ret () end
local ok, ret = xpcall (f, traceback, source, ...) if not ok then syslog.warningf ("handle message(%s) failed : %s", command, ret) return skynet.ret () end skynet.retpack (ret) end) end)
|