From b555aa19e74f21a36fa0f8b681e17832dfdcdbee Mon Sep 17 00:00:00 2001 From: JTrancender Date: Sat, 2 Apr 2022 12:17:47 +0800 Subject: [PATCH] feat: add cluster.unregister (#1563) --- examples/cluster1.lua | 2 ++ lualib/skynet/cluster.lua | 5 +++++ service/clusterd.lua | 12 ++++++++++++ 3 files changed, 19 insertions(+) diff --git a/examples/cluster1.lua b/examples/cluster1.lua index 79665826..10b2e2f2 100644 --- a/examples/cluster1.lua +++ b/examples/cluster1.lua @@ -12,6 +12,8 @@ skynet.start(function() -- register name "sdb" for simpledb, you can use cluster.query() later. -- See cluster2.lua cluster.register("sdb", sdb) + cluster.unregister("sdb") + cluster.register("sdb", sdb) print(skynet.call(sdb, "lua", "SET", "a", "foobar")) print(skynet.call(sdb, "lua", "SET", "b", "foobar2")) diff --git a/lualib/skynet/cluster.lua b/lualib/skynet/cluster.lua index a6886743..8118c2f6 100644 --- a/lualib/skynet/cluster.lua +++ b/lualib/skynet/cluster.lua @@ -106,6 +106,11 @@ function cluster.register(name, addr) return skynet.call(clusterd, "lua", "register", name, addr) end +function cluster.unregister(name) + assert(type(name) == "string") + return skynet.call(clusterd, "lua", "unregister", name) +end + function cluster.query(node, name) return skynet.call(get_sender(node), "lua", "req", 0, skynet.pack(name)) end diff --git a/service/clusterd.lua b/service/clusterd.lua index a00a4c51..d13eded5 100644 --- a/service/clusterd.lua +++ b/service/clusterd.lua @@ -204,6 +204,18 @@ function command.register(source, name, addr) skynet.error(string.format("Register [%s] :%08x", name, addr)) end +function command.unregister(_, name) + if not register_name[name] then + return skynet.ret(nil) + end + local addr = register_name[name] + register_name[addr] = nil + register_name[name] = nil + clearnamecache() + skynet.ret(nil) + skynet.error(string.format("Unregister [%s] :%08x", name, addr)) +end + function command.queryname(source, name) skynet.ret(skynet.pack(register_name[name])) end