diff --git a/lualib-src/lua-skynet.c b/lualib-src/lua-skynet.c index e92f8a9a..61e3b5c6 100644 --- a/lualib-src/lua-skynet.c +++ b/lualib-src/lua-skynet.c @@ -229,6 +229,15 @@ _redirect(lua_State *L) { return 0; } +static int +_forward(lua_State *L) { + struct skynet_context * context = lua_touserdata(L, lua_upvalueindex(1)); + uint32_t dest = luaL_checkunsigned(L,1); + skynet_forward(context, dest); + + return 0; +} + static int _error(lua_State *L) { struct skynet_context * context = lua_touserdata(L, lua_upvalueindex(1)); @@ -276,6 +285,7 @@ luaopen_skynet_c(lua_State *L) { { "send" , _send }, { "genid", _genid }, { "redirect", _redirect }, + { "forward", _forward }, { "command" , _command }, { "callback" , _callback }, { "error", _error }, diff --git a/lualib/skynet.lua b/lualib/skynet.lua index a0a8a930..d18006bb 100644 --- a/lualib/skynet.lua +++ b/lualib/skynet.lua @@ -159,6 +159,7 @@ function skynet.send(addr, typename, ...) end skynet.genid = assert(c.genid) +skynet.forward = assert(c.forward) skynet.redirect = function(dest,source,typename,...) return c.redirect(dest, source, proto[typename].id, ...)