mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-22 02:53:09 +00:00
56 lines
1.4 KiB
Lua
56 lines
1.4 KiB
Lua
local skynet = require "skynet"
|
|
|
|
local clusterd
|
|
local cluster = {}
|
|
|
|
function cluster.call(node, address, ...)
|
|
-- skynet.pack(...) will free by cluster.core.packrequest
|
|
return skynet.call(clusterd, "lua", "req", node, address, skynet.pack(...))
|
|
end
|
|
|
|
function cluster.send(node, address, ...)
|
|
-- skynet.pack(...) will free by cluster.core.packrequest
|
|
skynet.send(clusterd, "lua", "req", node, address, skynet.pack(...))
|
|
end
|
|
|
|
function cluster.open(port)
|
|
if type(port) == "string" then
|
|
skynet.call(clusterd, "lua", "listen", port)
|
|
else
|
|
skynet.call(clusterd, "lua", "listen", "0.0.0.0", port)
|
|
end
|
|
end
|
|
|
|
function cluster.reload(config)
|
|
skynet.call(clusterd, "lua", "reload", config)
|
|
end
|
|
|
|
function cluster.proxy(node, name)
|
|
return skynet.call(clusterd, "lua", "proxy", node, name)
|
|
end
|
|
|
|
function cluster.snax(node, name, address)
|
|
local snax = require "snax"
|
|
if not address then
|
|
address = cluster.call(node, ".service", "QUERY", "snaxd" , name)
|
|
end
|
|
local handle = skynet.call(clusterd, "lua", "proxy", node, address)
|
|
return snax.bind(handle, name)
|
|
end
|
|
|
|
function cluster.register(name, addr)
|
|
assert(type(name) == "string")
|
|
assert(addr == nil or type(addr) == "number")
|
|
return skynet.call(clusterd, "lua", "register", name, addr)
|
|
end
|
|
|
|
function cluster.query(node, name)
|
|
return skynet.call(clusterd, "lua", "req", node, 0, skynet.pack(name))
|
|
end
|
|
|
|
skynet.init(function()
|
|
clusterd = skynet.uniqueservice("clusterd")
|
|
end)
|
|
|
|
return cluster
|