mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-24 12:20:41 +00:00
@@ -228,6 +228,10 @@ filter_data_(lua_State *L, int fd, uint8_t * buffer, int size) {
|
|||||||
int need = uc->pack.size - uc->read;
|
int need = uc->pack.size - uc->read;
|
||||||
if (size < need) {
|
if (size < need) {
|
||||||
memcpy(uc->pack.buffer + uc->read, buffer, size);
|
memcpy(uc->pack.buffer + uc->read, buffer, size);
|
||||||
|
uc->read += size;
|
||||||
|
int h = hash_fd(fd);
|
||||||
|
uc->next = q->hash[h];
|
||||||
|
q->hash[h] = uc;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
memcpy(uc->pack.buffer + uc->read, buffer, need);
|
memcpy(uc->pack.buffer + uc->read, buffer, need);
|
||||||
@@ -246,7 +250,7 @@ filter_data_(lua_State *L, int fd, uint8_t * buffer, int size) {
|
|||||||
free(uc);
|
free(uc);
|
||||||
push_more(L, fd, buffer, size);
|
push_more(L, fd, buffer, size);
|
||||||
lua_pushvalue(L, lua_upvalueindex(TYPE_MORE));
|
lua_pushvalue(L, lua_upvalueindex(TYPE_MORE));
|
||||||
return 2;
|
return 2;
|
||||||
} else {
|
} else {
|
||||||
if (size == 1) {
|
if (size == 1) {
|
||||||
struct uncomplete * uc = save_uncomplete(L, fd);
|
struct uncomplete * uc = save_uncomplete(L, fd);
|
||||||
@@ -282,7 +286,7 @@ filter_data_(lua_State *L, int fd, uint8_t * buffer, int size) {
|
|||||||
size -= pack_size;
|
size -= pack_size;
|
||||||
push_more(L, fd, buffer, size);
|
push_more(L, fd, buffer, size);
|
||||||
lua_pushvalue(L, lua_upvalueindex(TYPE_MORE));
|
lua_pushvalue(L, lua_upvalueindex(TYPE_MORE));
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -290,7 +294,7 @@ static inline int
|
|||||||
filter_data(lua_State *L, int fd, uint8_t * buffer, int size) {
|
filter_data(lua_State *L, int fd, uint8_t * buffer, int size) {
|
||||||
int ret = filter_data_(L, fd, buffer, size);
|
int ret = filter_data_(L, fd, buffer, size);
|
||||||
// buffer is the data of socket message, it malloc at socket_server.c : function forward_message .
|
// buffer is the data of socket message, it malloc at socket_server.c : function forward_message .
|
||||||
// it should be free before return,
|
// it should be free before return,
|
||||||
free(buffer);
|
free(buffer);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -308,7 +312,7 @@ pushstring(lua_State *L, const char * msg) {
|
|||||||
userdata queue
|
userdata queue
|
||||||
lightuserdata msg
|
lightuserdata msg
|
||||||
integer size
|
integer size
|
||||||
return
|
return
|
||||||
userdata queue
|
userdata queue
|
||||||
integer type
|
integer type
|
||||||
integer fd
|
integer fd
|
||||||
@@ -359,7 +363,7 @@ lfilter(lua_State *L) {
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
userdata queue
|
userdata queue
|
||||||
return
|
return
|
||||||
integer fd
|
integer fd
|
||||||
lightuserdata msg
|
lightuserdata msg
|
||||||
integer size
|
integer size
|
||||||
@@ -381,7 +385,7 @@ lpop(lua_State *L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
string msg | lightuserdata/integer
|
string msg | lightuserdata/integer
|
||||||
|
|
||||||
lightuserdata/integer
|
lightuserdata/integer
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user