mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-24 12:20:41 +00:00
add cluster.proxy and cluster.ncall
This commit is contained in:
@@ -4,7 +4,7 @@ local clusterd
|
||||
local cluster = {}
|
||||
|
||||
function cluster.call(node, address, ...)
|
||||
-- skynet.pack(...) will free by cluster.c.packrequest
|
||||
-- skynet.pack(...) will free by cluster.core.packrequest
|
||||
return skynet.call(clusterd, "lua", "req", node, address, skynet.pack(...))
|
||||
end
|
||||
|
||||
@@ -20,6 +20,23 @@ function cluster.reload()
|
||||
skynet.call(clusterd, "lua", "reload")
|
||||
end
|
||||
|
||||
function cluster.proxy(node, name)
|
||||
return skynet.call(clusterd, "lua", "proxy", node, name)
|
||||
end
|
||||
|
||||
local namecache = {}
|
||||
|
||||
function cluster.ncall(name, ...)
|
||||
local s = namecache[name]
|
||||
if not s then
|
||||
local node , lname = name:match "(.-)(%..+)"
|
||||
assert(node and lname)
|
||||
s = cluster.proxy(node, lname)
|
||||
namecache[name] = assert(s)
|
||||
end
|
||||
return skynet.call(s, "lua", ...)
|
||||
end
|
||||
|
||||
skynet.init(function()
|
||||
clusterd = skynet.uniqueservice("clusterd")
|
||||
end)
|
||||
|
||||
Reference in New Issue
Block a user