From 7e24d460470ca1daae31f377411c1f539fa5a3a9 Mon Sep 17 00:00:00 2001 From: Cloud Wu Date: Thu, 14 Aug 2014 11:11:01 +0800 Subject: [PATCH] clusterproxy --- service/clusterproxy.lua | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 service/clusterproxy.lua diff --git a/service/clusterproxy.lua b/service/clusterproxy.lua new file mode 100644 index 00000000..6edcb674 --- /dev/null +++ b/service/clusterproxy.lua @@ -0,0 +1,27 @@ +local skynet = require "skynet" +local cluster = require "cluster" + +local node, address = ... + +skynet.register_protocol { + name = "system", + id = skynet.PTYPE_SYSTEM, + unpack = function (...) return ... end, +} + +local forward_map = { + [skynet.PTYPE_LUA] = skynet.PTYPE_SYSTEM, + [skynet.PTYPE_RESPONSE] = skynet.PTYPE_RESPONSE, -- don't free response message +} + +skynet.forward_type( forward_map ,function() + local clusterd = skynet.uniqueservice("clusterd") + local n = tonumber(address) + if n then + address = n + end + skynet.dispatch("system", function (session, source, msg, sz) + local m,s = skynet.rawcall(clusterd, "lua", skynet.pack("req", node, address, msg, sz)) + skynet.ret(skynet.rawcall(clusterd, "lua", skynet.pack("req", node, address, msg, sz))) + end) +end)