mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-24 20:23:06 +00:00
fix a legacy problem. make harbor service more stable
This commit is contained in:
@@ -11,12 +11,15 @@
|
||||
static struct skynet_context * REMOTE = 0;
|
||||
static unsigned int HARBOR = ~0;
|
||||
|
||||
static inline int
|
||||
invalid_type(int type) {
|
||||
return type != PTYPE_SYSTEM && type != PTYPE_HARBOR;
|
||||
}
|
||||
|
||||
void
|
||||
skynet_harbor_send(struct remote_message *rmsg, uint32_t source, int session) {
|
||||
int type = rmsg->sz >> MESSAGE_TYPE_SHIFT;
|
||||
rmsg->sz &= MESSAGE_TYPE_MASK;
|
||||
assert(type != PTYPE_SYSTEM && type != PTYPE_HARBOR && REMOTE);
|
||||
skynet_context_send(REMOTE, rmsg, sizeof(*rmsg) , source, type , session);
|
||||
assert(invalid_type(rmsg->type) && REMOTE);
|
||||
skynet_context_send(REMOTE, rmsg, sizeof(*rmsg) , source, PTYPE_SYSTEM , session);
|
||||
}
|
||||
|
||||
int
|
||||
|
||||
@@ -16,6 +16,7 @@ struct remote_message {
|
||||
struct remote_name destination;
|
||||
const void * message;
|
||||
size_t sz;
|
||||
int type;
|
||||
};
|
||||
|
||||
void skynet_harbor_send(struct remote_message *rmsg, uint32_t source, int session);
|
||||
|
||||
@@ -718,7 +718,8 @@ skynet_send(struct skynet_context * context, uint32_t source, uint32_t destinati
|
||||
struct remote_message * rmsg = skynet_malloc(sizeof(*rmsg));
|
||||
rmsg->destination.handle = destination;
|
||||
rmsg->message = data;
|
||||
rmsg->sz = sz;
|
||||
rmsg->sz = sz & MESSAGE_TYPE_MASK;
|
||||
rmsg->type = sz >> MESSAGE_TYPE_SHIFT;
|
||||
skynet_harbor_send(rmsg, source, session);
|
||||
} else {
|
||||
struct skynet_message smsg;
|
||||
@@ -758,7 +759,8 @@ skynet_sendname(struct skynet_context * context, uint32_t source, const char * a
|
||||
copy_name(rmsg->destination.name, addr);
|
||||
rmsg->destination.handle = 0;
|
||||
rmsg->message = data;
|
||||
rmsg->sz = sz;
|
||||
rmsg->sz = sz & MESSAGE_TYPE_MASK;
|
||||
rmsg->type = sz >> MESSAGE_TYPE_SHIFT;
|
||||
|
||||
skynet_harbor_send(rmsg, source, session);
|
||||
return session;
|
||||
|
||||
Reference in New Issue
Block a user