From eba15c820f5c96bc66ecb7411c73ab7d3f2d1436 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E9=A3=8E?= Date: Tue, 4 Sep 2012 11:19:41 +0800 Subject: [PATCH] use HANDLE_MASK & HANDLE_REMOTE_SHIFT --- service-src/service_harbor.c | 10 +++++----- service-src/service_multicast.c | 3 ++- skynet-src/skynet_error.c | 2 +- skynet-src/skynet_harbor.c | 4 ++-- skynet-src/skynet_mq.c | 3 ++- skynet-src/skynet_server.c | 16 ++++++++-------- skynet-src/skynet_timer.c | 4 ++-- 7 files changed, 22 insertions(+), 20 deletions(-) diff --git a/service-src/service_harbor.c b/service-src/service_harbor.c index 5089d548..34cb84b5 100644 --- a/service-src/service_harbor.c +++ b/service-src/service_harbor.c @@ -358,7 +358,7 @@ _dispatch_queue(struct harbor *h, struct skynet_context * context, struct msg_qu struct msg * m = _pop_queue(queue); while (m) { struct remote_message_header * cookie = (struct remote_message_header *)(m->buffer + m->size - sizeof(*cookie)); - cookie->destination |= (handle & 0xffffff); + cookie->destination |= (handle & HANDLE_MASK); _header_to_message(cookie, (uint32_t *)cookie); int err = _send_package(fd, m->buffer, m->size); if (err) { @@ -428,7 +428,7 @@ _remote_send_handle(struct harbor *h, struct skynet_context * context, uint32_t if (fd >= 0) { struct remote_message_header cookie; cookie.source = source; - cookie.destination = (destination & 0xffffff) | ((uint32_t)type << 24); + cookie.destination = (destination & HANDLE_MASK) | ((uint32_t)type << HANDLE_REMOTE_SHIFT); cookie.session = (uint32_t)session; int err = _send_remote(fd, msg,sz,&cookie); if (err) { @@ -471,7 +471,7 @@ _remote_send_name(struct harbor *h, struct skynet_context * context, uint32_t so } struct remote_message_header header; header.source = source; - header.destination = type << 24; + header.destination = type << HANDLE_REMOTE_SHIFT; header.session = (uint32_t)session; _push_queue(node->queue, msg, sz, &header); // 0 for request @@ -518,8 +518,8 @@ _mainloop(struct skynet_context * context, void * ud, int type, int session, uin } } else { uint32_t destination = header.destination; - int type = (destination >> 24) | PTYPE_TAG_DONTCOPY; - destination = (destination & 0xffffff) | ((uint32_t)h->id << 24); + int type = (destination >> HANDLE_REMOTE_SHIFT) | PTYPE_TAG_DONTCOPY; + destination = (destination & HANDLE_MASK) | ((uint32_t)h->id << HANDLE_REMOTE_SHIFT); skynet_send(context, header.source, destination, type, (int)header.session, (void *)msg, sz-12); return 1; } diff --git a/service-src/service_multicast.c b/service-src/service_multicast.c index c2941acd..df85c4a6 100644 --- a/service-src/service_multicast.c +++ b/service-src/service_multicast.c @@ -1,4 +1,5 @@ #include "skynet.h" +#include "skynet_handle.h" #include "skynet_multicast.h" #include @@ -42,7 +43,7 @@ _maincb(struct skynet_context * context, void * ud, int type, int session, uint3 } return 0; } else { - sz |= type << 24; + sz |= type << HANDLE_REMOTE_SHIFT; struct skynet_multicast_message * mc = skynet_multicast_create(msg, sz, source); skynet_multicast_castgroup(context, g, mc); return 1; diff --git a/skynet-src/skynet_error.c b/skynet-src/skynet_error.c index db77eec7..a4ccfa96 100644 --- a/skynet-src/skynet_error.c +++ b/skynet-src/skynet_error.c @@ -39,7 +39,7 @@ skynet_error(struct skynet_context * context, const char *msg, ...) { } smsg.session = 0; smsg.data = strdup(tmp); - smsg.sz = len | (PTYPE_TEXT << 24); + smsg.sz = len | (PTYPE_TEXT << HANDLE_REMOTE_SHIFT); skynet_context_push(logger, &smsg); } diff --git a/skynet-src/skynet_harbor.c b/skynet-src/skynet_harbor.c index d14f928a..1e9b771d 100644 --- a/skynet-src/skynet_harbor.c +++ b/skynet-src/skynet_harbor.c @@ -11,8 +11,8 @@ static int HARBOR = 0; void skynet_harbor_send(struct remote_message *rmsg, uint32_t source, int session) { - int type = rmsg->sz >> 24; - rmsg->sz &= 0xffffff; + int type = rmsg->sz >> HANDLE_REMOTE_SHIFT; + rmsg->sz &= HANDLE_MASK; assert(type != PTYPE_SYSTEM && type != PTYPE_HARBOR); skynet_context_send(REMOTE, rmsg, sizeof(*rmsg) , source, type , session); } diff --git a/skynet-src/skynet_mq.c b/skynet-src/skynet_mq.c index e45e154b..7bb49dea 100644 --- a/skynet-src/skynet_mq.c +++ b/skynet-src/skynet_mq.c @@ -1,5 +1,6 @@ #include "skynet.h" #include "skynet_mq.h" +#include "skynet_handle.h" #include "skynet_multicast.h" #include @@ -193,7 +194,7 @@ _drop_queue(struct message_queue *q) { int s = 0; while(!skynet_mq_pop(q, &msg)) { ++s; - int type = msg.sz >> 24; + int type = msg.sz >> HANDLE_REMOTE_SHIFT; if (type == PTYPE_MULTICAST) { assert(msg.sz == 0); skynet_multicast_dispatch((struct skynet_multicast_message *)msg.data, NULL, NULL); diff --git a/skynet-src/skynet_server.c b/skynet-src/skynet_server.c index 0592cbd8..0d105fbc 100644 --- a/skynet-src/skynet_server.c +++ b/skynet-src/skynet_server.c @@ -184,8 +184,8 @@ _forwarding(struct skynet_context *ctx, struct skynet_message *msg) { static void _mc(void *ud, uint32_t source, const void * msg, size_t sz) { struct skynet_context * ctx = ud; - int type = sz >> 24; - sz &= 0xffffff; + int type = sz >> HANDLE_REMOTE_SHIFT; + sz &= HANDLE_MASK; ctx->cb(ctx, ctx->cb_ud, type, 0, source, msg, sz); if (ctx->forward) { uint32_t des = ctx->forward; @@ -195,7 +195,7 @@ _mc(void *ud, uint32_t source, const void * msg, size_t sz) { message.session = 0; message.data = malloc(sz); memcpy(message.data, msg, sz); - message.sz = sz | (type << 24); + message.sz = sz | (type << HANDLE_REMOTE_SHIFT); _send_message(des, &message); } } @@ -204,8 +204,8 @@ static void _dispatch_message(struct skynet_context *ctx, struct skynet_message *msg) { assert(ctx->init); CHECKCALLING_BEGIN(ctx) - int type = msg->sz >> 24; - size_t sz = msg->sz & 0xffffff; + int type = msg->sz >> HANDLE_REMOTE_SHIFT; + size_t sz = msg->sz & HANDLE_MASK; if (type == PTYPE_MULTICAST) { skynet_multicast_dispatch((struct skynet_multicast_message *)msg->data, ctx, _mc); } else { @@ -478,8 +478,8 @@ _filter_args(struct skynet_context * context, int type, int *session, void ** da } *data = msg; - assert((*sz & 0xffffff) == *sz); - *sz |= type << 24; + assert((*sz & HANDLE_MASK) == *sz); + *sz |= type << HANDLE_REMOTE_SHIFT; } int @@ -567,7 +567,7 @@ skynet_context_send(struct skynet_context * ctx, void * msg, size_t sz, uint32_t smsg.source = source; smsg.session = session; smsg.data = msg; - smsg.sz = sz | type << 24; + smsg.sz = sz | type << HANDLE_REMOTE_SHIFT; skynet_mq_push(ctx->queue, &smsg); } diff --git a/skynet-src/skynet_timer.c b/skynet-src/skynet_timer.c index a7f76186..2ed08e5f 100644 --- a/skynet-src/skynet_timer.c +++ b/skynet-src/skynet_timer.c @@ -115,7 +115,7 @@ timer_execute(struct timer *T) message.source = 0; message.session = event->session; message.data = NULL; - message.sz = PTYPE_RESPONSE << 24; + message.sz = PTYPE_RESPONSE << HANDLE_REMOTE_SHIFT; skynet_context_push(event->handle, &message); @@ -181,7 +181,7 @@ skynet_timeout(uint32_t handle, int time, int session) { message.source = 0; message.session = session; message.data = NULL; - message.sz = PTYPE_RESPONSE << 24; + message.sz = PTYPE_RESPONSE << HANDLE_REMOTE_SHIFT; if (skynet_context_push(handle, &message)) { return -1;