mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-24 12:20:41 +00:00
gate support user defined header size
This commit is contained in:
@@ -270,10 +270,10 @@ _message_to_header(const uint32_t *message, struct remote_message_header *header
|
||||
|
||||
static int
|
||||
_send_package(int fd, const void * buffer, size_t sz) {
|
||||
uint16_t header = htons(sz);
|
||||
uint32_t header = htonl(sz);
|
||||
struct iovec part[2];
|
||||
part[0].iov_base = &header;
|
||||
part[0].iov_len = 2;
|
||||
part[0].iov_len = 4;
|
||||
part[1].iov_base = (void*)buffer;
|
||||
part[1].iov_len = sz;
|
||||
|
||||
@@ -286,7 +286,7 @@ _send_package(int fd, const void * buffer, size_t sz) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (err != sz+2) {
|
||||
if (err != sz+4) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
@@ -295,11 +295,11 @@ _send_package(int fd, const void * buffer, size_t sz) {
|
||||
|
||||
static int
|
||||
_send_remote(int fd, const char * buffer, size_t sz, struct remote_message_header * cookie) {
|
||||
uint16_t sz_header = htons(sz+sizeof(*cookie));
|
||||
uint32_t sz_header = htonl(sz+sizeof(*cookie));
|
||||
struct iovec part[3];
|
||||
|
||||
part[0].iov_base = &sz_header;
|
||||
part[0].iov_len = 2;
|
||||
part[0].iov_len = 4;
|
||||
|
||||
part[1].iov_base = (char *)buffer;
|
||||
part[1].iov_len = sz;
|
||||
@@ -318,7 +318,7 @@ _send_remote(int fd, const char * buffer, size_t sz, struct remote_message_heade
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (err != sz+sizeof(*cookie)+2) {
|
||||
if (err != sz+sizeof(*cookie)+4) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
@@ -568,7 +568,7 @@ harbor_init(struct harbor *h, struct skynet_context *ctx, const char * args) {
|
||||
h->master_fd = master_fd;
|
||||
|
||||
char tmp[128];
|
||||
sprintf(tmp,"gate ! %s %d %d 0",local_addr, PTYPE_HARBOR, REMOTE_MAX);
|
||||
sprintf(tmp,"gate L ! %s %d %d 0",local_addr, PTYPE_HARBOR, REMOTE_MAX);
|
||||
const char * gate_addr = skynet_command(ctx, "LAUNCH", tmp);
|
||||
if (gate_addr == NULL) {
|
||||
skynet_error(ctx, "Harbor : launch gate failed");
|
||||
|
||||
@@ -131,18 +131,18 @@ _connect_to(const char *ipaddress) {
|
||||
|
||||
static int
|
||||
_send_to(int fd, const void * buf, size_t sz, uint32_t handle) {
|
||||
char buffer[2 + sz + 12];
|
||||
uint16_t header = htons(sz+12);
|
||||
memcpy(buffer, &header, 2);
|
||||
memcpy(buffer+2, buf, sz);
|
||||
char buffer[4 + sz + 12];
|
||||
uint32_t header = htonl(sz+12);
|
||||
memcpy(buffer, &header, 4);
|
||||
memcpy(buffer+4, buf, sz);
|
||||
uint32_t u32 = 0;
|
||||
memcpy(buffer+2+sz,&u32,4);
|
||||
memcpy(buffer+4+sz,&u32,4);
|
||||
u32 = htonl(handle);
|
||||
memcpy(buffer+2+sz+4,&u32,4);
|
||||
memcpy(buffer+4+sz+4,&u32,4);
|
||||
u32 = 0;
|
||||
memcpy(buffer+2+sz+8,&u32,4);
|
||||
memcpy(buffer+4+sz+8,&u32,4);
|
||||
|
||||
sz += 2 + 12;
|
||||
sz += 4 + 12;
|
||||
|
||||
for (;;) {
|
||||
int err = send(fd, buffer, sz, 0);
|
||||
@@ -269,7 +269,7 @@ _mainloop(struct skynet_context * context, void * ud, int type, int session, uin
|
||||
int
|
||||
master_init(struct master *m, struct skynet_context *ctx, const char * args) {
|
||||
char tmp[strlen(args) + 32];
|
||||
sprintf(tmp,"gate ! %s %d %d 0",args,PTYPE_HARBOR,REMOTE_MAX);
|
||||
sprintf(tmp,"gate L ! %s %d %d 0",args,PTYPE_HARBOR,REMOTE_MAX);
|
||||
const char * gate_addr = skynet_command(ctx, "LAUNCH", tmp);
|
||||
if (gate_addr == NULL) {
|
||||
skynet_error(ctx, "Master : launch gate failed");
|
||||
|
||||
Reference in New Issue
Block a user