mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-22 02:53:09 +00:00
Add shutdown to client_socket for testing
This commit is contained in:
@@ -185,6 +185,40 @@ lreadstdin(lua_State *L) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
lshutdown(lua_State *L) {
|
||||||
|
int fd = luaL_checkinteger(L,1);
|
||||||
|
const char *mode = luaL_checkstring(L,2);
|
||||||
|
int v = 0;
|
||||||
|
int i;
|
||||||
|
int read = 1;
|
||||||
|
int write = 2;
|
||||||
|
for (i=0;mode[i];i++) {
|
||||||
|
switch(mode[i]) {
|
||||||
|
case 'r':
|
||||||
|
v |= read;
|
||||||
|
break;
|
||||||
|
case 'w':
|
||||||
|
v |= write;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return luaL_error(L, "Invalid mode %c", mode[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (v == 0) {
|
||||||
|
return luaL_error(L, "mode should be r or/and w");
|
||||||
|
}
|
||||||
|
if (v == read)
|
||||||
|
v = SHUT_RD;
|
||||||
|
else if (v == write)
|
||||||
|
v = SHUT_WR;
|
||||||
|
else
|
||||||
|
v = SHUT_RDWR;
|
||||||
|
printf("SHUTDOWN %d %d\n", fd, v);
|
||||||
|
shutdown(fd, v);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
LUAMOD_API int
|
LUAMOD_API int
|
||||||
luaopen_client_socket(lua_State *L) {
|
luaopen_client_socket(lua_State *L) {
|
||||||
luaL_checkversion(L);
|
luaL_checkversion(L);
|
||||||
@@ -192,6 +226,7 @@ luaopen_client_socket(lua_State *L) {
|
|||||||
{ "connect", lconnect },
|
{ "connect", lconnect },
|
||||||
{ "recv", lrecv },
|
{ "recv", lrecv },
|
||||||
{ "send", lsend },
|
{ "send", lsend },
|
||||||
|
{ "shutdown", lshutdown },
|
||||||
{ "close", lclose },
|
{ "close", lclose },
|
||||||
{ "usleep", lusleep },
|
{ "usleep", lusleep },
|
||||||
{ NULL, NULL },
|
{ NULL, NULL },
|
||||||
|
|||||||
Reference in New Issue
Block a user