gate support user defined header size

This commit is contained in:
云风
2012-09-05 10:56:16 +08:00
parent 28dc8403a1
commit 664056977d
5 changed files with 57 additions and 32 deletions

View File

@@ -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");

View File

@@ -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");