From c008476417b20fd06202cc3d196dc0e076cb1c3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E9=A3=8E?= Date: Fri, 22 Oct 2021 17:43:07 +0800 Subject: [PATCH] Support string address, see #1490 (#1491) --- lualib/skynet/manager.lua | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/lualib/skynet/manager.lua b/lualib/skynet/manager.lua index 90d389fb..e2c5fc4d 100644 --- a/lualib/skynet/manager.lua +++ b/lualib/skynet/manager.lua @@ -1,17 +1,30 @@ local skynet = require "skynet" local c = require "skynet.core" +local function number_address(name) + local t = type(name) + if t == "number" then + return name + elseif t == "string" then + local hex = name:match "^:(%x+)" + if hex then + return tonumber(hex, 16) + end + end +end + function skynet.launch(...) local addr = c.command("LAUNCH", table.concat({...}," ")) if addr then - return tonumber("0x" .. string.sub(addr , 2)) + return tonumber(string.sub(addr , 2), 16) end end function skynet.kill(name) - if type(name) == "number" then - skynet.send(".launcher","lua","REMOVE",name, true) - name = skynet.address(name) + local addr = number_address(name) + if addr then + skynet.send(".launcher","lua","REMOVE", addr, true) + name = skynet.address(addr) end c.command("KILL",name) end