From 70271817a13e7bec1445f6a525f790e8e98d8335 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E9=A3=8E?= Date: Fri, 10 Aug 2012 19:20:58 +0800 Subject: [PATCH] client send session 0x7fffffff --- gate/main.c | 4 ++-- lualib/skynet.lua | 4 ++++ service/agent.lua | 3 +-- skynet-src/skynet_server.c | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/gate/main.c b/gate/main.c index a1e01ba8..e7444a35 100644 --- a/gate/main.c +++ b/gate/main.c @@ -124,8 +124,8 @@ static void _forward(struct skynet_context * ctx,struct gate *g, int uid, void * data, size_t len) { struct connection * agent = _id_to_agent(g,uid); if (agent->agent) { - // todo: client package has not session , send 0 - skynet_send(ctx, agent->client, agent->agent, 0, data, len, 0); + // todo: client package has not session , send 0x7fffffff + skynet_send(ctx, agent->client, agent->agent, 0x7fffffff, data, len, 0); } else { char * tmp = malloc(len + 32); int n = snprintf(tmp,len+32,"%d data ",uid); diff --git a/lualib/skynet.lua b/lualib/skynet.lua index c6787a0c..5ef94c31 100644 --- a/lualib/skynet.lua +++ b/lualib/skynet.lua @@ -88,6 +88,10 @@ skynet.tostring = assert(c.tostring) skynet.unpack = assert(c.unpack) function skynet.call(addr, deseri , ...) + if deseri == nil then + local session = c.send(addr, -1, ...) + return coroutine.yield("CALL", session) + end local t = type(deseri) if t == "function" then local session = c.send(addr, -1, ...) diff --git a/service/agent.lua b/service/agent.lua index 5c73a134..aa20af13 100644 --- a/service/agent.lua +++ b/service/agent.lua @@ -3,8 +3,7 @@ local client = ... local session_id = 0 skynet.filter(function (session, address , msg, sz) - if address == client then - assert(session == 0) + if session == 0x7fffffff then print("client message",skynet.tostring(msg,sz)) -- It's client, there is no session session_id = session_id + 1 diff --git a/skynet-src/skynet_server.c b/skynet-src/skynet_server.c index e7dac85d..0bac4631 100644 --- a/skynet-src/skynet_server.c +++ b/skynet-src/skynet_server.c @@ -95,7 +95,7 @@ skynet_context_new(const char * name, const char *param) { int skynet_context_newsession(struct skynet_context *ctx) { int session = ++ctx->session_id; - if (session < 0) { + if (session >= 0x7fffffff) { ctx->session_id = 1; return 1; }