diff options
| author | Diego Nehab <diego@tecgraf.puc-rio.br> | 2005-02-08 10:01:01 +0000 |
|---|---|---|
| committer | Diego Nehab <diego@tecgraf.puc-rio.br> | 2005-02-08 10:01:01 +0000 |
| commit | 8d4e240f6ae50d9b22ddc44f5e207018935da907 (patch) | |
| tree | d8ca9a51dc35534592f700e42740feac20242ede /src/tcp.c | |
| parent | 5d32848674b723521e87836eafa24f5ae8f80a89 (diff) | |
| download | luasocket-8d4e240f6ae50d9b22ddc44f5e207018935da907.tar.gz luasocket-8d4e240f6ae50d9b22ddc44f5e207018935da907.tar.bz2 luasocket-8d4e240f6ae50d9b22ddc44f5e207018935da907.zip | |
Forward server working on Mac OS X...
Diffstat (limited to 'src/tcp.c')
| -rw-r--r-- | src/tcp.c | 22 |
1 files changed, 20 insertions, 2 deletions
| @@ -20,6 +20,7 @@ | |||
| 20 | \*=========================================================================*/ | 20 | \*=========================================================================*/ |
| 21 | static int global_create(lua_State *L); | 21 | static int global_create(lua_State *L); |
| 22 | static int meth_connect(lua_State *L); | 22 | static int meth_connect(lua_State *L); |
| 23 | static int meth_connected(lua_State *L); | ||
| 23 | static int meth_listen(lua_State *L); | 24 | static int meth_listen(lua_State *L); |
| 24 | static int meth_bind(lua_State *L); | 25 | static int meth_bind(lua_State *L); |
| 25 | static int meth_send(lua_State *L); | 26 | static int meth_send(lua_State *L); |
| @@ -45,6 +46,7 @@ static luaL_reg tcp[] = { | |||
| 45 | {"bind", meth_bind}, | 46 | {"bind", meth_bind}, |
| 46 | {"close", meth_close}, | 47 | {"close", meth_close}, |
| 47 | {"connect", meth_connect}, | 48 | {"connect", meth_connect}, |
| 49 | {"connected", meth_connected}, | ||
| 48 | {"dirty", meth_dirty}, | 50 | {"dirty", meth_dirty}, |
| 49 | {"getfd", meth_getfd}, | 51 | {"getfd", meth_getfd}, |
| 50 | {"getpeername", meth_getpeername}, | 52 | {"getpeername", meth_getpeername}, |
| @@ -113,12 +115,12 @@ static int meth_receive(lua_State *L) { | |||
| 113 | } | 115 | } |
| 114 | 116 | ||
| 115 | static int meth_getstats(lua_State *L) { | 117 | static int meth_getstats(lua_State *L) { |
| 116 | p_tcp tcp = (p_tcp) aux_checkgroup(L, "tcp{any}", 1); | 118 | p_tcp tcp = (p_tcp) aux_checkclass(L, "tcp{client}", 1); |
| 117 | return buf_meth_getstats(L, &tcp->buf); | 119 | return buf_meth_getstats(L, &tcp->buf); |
| 118 | } | 120 | } |
| 119 | 121 | ||
| 120 | static int meth_setstats(lua_State *L) { | 122 | static int meth_setstats(lua_State *L) { |
| 121 | p_tcp tcp = (p_tcp) aux_checkgroup(L, "tcp{any}", 1); | 123 | p_tcp tcp = (p_tcp) aux_checkclass(L, "tcp{client}", 1); |
| 122 | return buf_meth_setstats(L, &tcp->buf); | 124 | return buf_meth_setstats(L, &tcp->buf); |
| 123 | } | 125 | } |
| 124 | 126 | ||
| @@ -224,6 +226,22 @@ static int meth_connect(lua_State *L) | |||
| 224 | return 1; | 226 | return 1; |
| 225 | } | 227 | } |
| 226 | 228 | ||
| 229 | static int meth_connected(lua_State *L) | ||
| 230 | { | ||
| 231 | static t_tm tm = {-1, -1}; | ||
| 232 | p_tcp tcp = (p_tcp) aux_checkclass(L, "tcp{master}", 1); | ||
| 233 | int err = sock_connected(&tcp->sock, &tm); | ||
| 234 | if (err != IO_DONE) { | ||
| 235 | lua_pushnil(L); | ||
| 236 | lua_pushstring(L, sock_strerror(err)); | ||
| 237 | return 2; | ||
| 238 | } | ||
| 239 | /* turn master object into a client object */ | ||
| 240 | aux_setclass(L, "tcp{client}", 1); | ||
| 241 | lua_pushnumber(L, 1); | ||
| 242 | return 1; | ||
| 243 | } | ||
| 244 | |||
| 227 | /*-------------------------------------------------------------------------*\ | 245 | /*-------------------------------------------------------------------------*\ |
| 228 | * Closes socket used by object | 246 | * Closes socket used by object |
| 229 | \*-------------------------------------------------------------------------*/ | 247 | \*-------------------------------------------------------------------------*/ |
