diff options
| author | Diego Nehab <diego@tecgraf.puc-rio.br> | 2003-03-28 21:08:50 +0000 |
|---|---|---|
| committer | Diego Nehab <diego@tecgraf.puc-rio.br> | 2003-03-28 21:08:50 +0000 |
| commit | f18d1b7cd0ec4708518ab5e18ea33b6eadca0301 (patch) | |
| tree | e831c6b1957af47db1301675b52c0d2a2e315fa7 /src/udp.c | |
| parent | 307603b24dde69eac62d2cb52123488137520c9c (diff) | |
| download | luasocket-f18d1b7cd0ec4708518ab5e18ea33b6eadca0301.tar.gz luasocket-f18d1b7cd0ec4708518ab5e18ea33b6eadca0301.tar.bz2 luasocket-f18d1b7cd0ec4708518ab5e18ea33b6eadca0301.zip | |
Closer to release...
Diffstat (limited to 'src/udp.c')
| -rw-r--r-- | src/udp.c | 26 |
1 files changed, 19 insertions, 7 deletions
| @@ -1,5 +1,17 @@ | |||
| 1 | /*=========================================================================*\ | 1 | /*=========================================================================*\ |
| 2 | * UDP socket object implementation (inherits from sock and inet) | 2 | * UDP class: inherits from Socked and Internet domain classes and provides |
| 3 | * all the functionality for UDP objects. | ||
| 4 | * Lua methods: | ||
| 5 | * send: using compat module | ||
| 6 | * sendto: using compat module | ||
| 7 | * receive: using compat module | ||
| 8 | * receivefrom: using compat module | ||
| 9 | * setpeername: using internet module | ||
| 10 | * setsockname: using internet module | ||
| 11 | * Global Lua functions: | ||
| 12 | * udp: creates the udp object | ||
| 13 | * | ||
| 14 | * RCS ID: $Id$ | ||
| 3 | \*=========================================================================*/ | 15 | \*=========================================================================*/ |
| 4 | #include <string.h> | 16 | #include <string.h> |
| 5 | 17 | ||
| @@ -21,7 +33,7 @@ static int udp_lua_receivefrom(lua_State *L); | |||
| 21 | static int udp_lua_setpeername(lua_State *L); | 33 | static int udp_lua_setpeername(lua_State *L); |
| 22 | static int udp_lua_setsockname(lua_State *L); | 34 | static int udp_lua_setsockname(lua_State *L); |
| 23 | 35 | ||
| 24 | static int udp_global_udpsocket(lua_State *L); | 36 | static int udp_global_udp(lua_State *L); |
| 25 | 37 | ||
| 26 | static struct luaL_reg funcs[] = { | 38 | static struct luaL_reg funcs[] = { |
| 27 | {"send", udp_lua_send}, | 39 | {"send", udp_lua_send}, |
| @@ -44,7 +56,7 @@ void udp_open(lua_State *L) | |||
| 44 | priv_newclass(L, UDP_CLASS); | 56 | priv_newclass(L, UDP_CLASS); |
| 45 | udp_inherit(L, UDP_CLASS); | 57 | udp_inherit(L, UDP_CLASS); |
| 46 | /* declare global functions */ | 58 | /* declare global functions */ |
| 47 | lua_pushcfunction(L, udp_global_udpsocket); | 59 | lua_pushcfunction(L, udp_global_udp); |
| 48 | priv_newglobal(L, "udp"); | 60 | priv_newglobal(L, "udp"); |
| 49 | for (i = 0; i < sizeof(funcs)/sizeof(funcs[0]); i++) | 61 | for (i = 0; i < sizeof(funcs)/sizeof(funcs[0]); i++) |
| 50 | priv_newglobalmethod(L, funcs[i].name); | 62 | priv_newglobalmethod(L, funcs[i].name); |
| @@ -99,7 +111,7 @@ p_udp udp_push(lua_State *L) | |||
| 99 | * On success: udp socket | 111 | * On success: udp socket |
| 100 | * On error: nil, followed by an error message | 112 | * On error: nil, followed by an error message |
| 101 | \*-------------------------------------------------------------------------*/ | 113 | \*-------------------------------------------------------------------------*/ |
| 102 | static int udp_global_udpsocket(lua_State *L) | 114 | static int udp_global_udp(lua_State *L) |
| 103 | { | 115 | { |
| 104 | int oldtop = lua_gettop(L); | 116 | int oldtop = lua_gettop(L); |
| 105 | p_udp udp = udp_push(L); | 117 | p_udp udp = udp_push(L); |
| @@ -134,7 +146,7 @@ static int udp_global_udpsocket(lua_State *L) | |||
| 134 | static int udp_lua_receive(lua_State *L) | 146 | static int udp_lua_receive(lua_State *L) |
| 135 | { | 147 | { |
| 136 | p_udp udp = (p_udp) lua_touserdata(L, 1); | 148 | p_udp udp = (p_udp) lua_touserdata(L, 1); |
| 137 | unsigned char buffer[UDP_DATAGRAMSIZE]; | 149 | char buffer[UDP_DATAGRAMSIZE]; |
| 138 | size_t got, wanted = (size_t) luaL_optnumber(L, 2, sizeof(buffer)); | 150 | size_t got, wanted = (size_t) luaL_optnumber(L, 2, sizeof(buffer)); |
| 139 | int err; | 151 | int err; |
| 140 | p_tm tm = &udp->base_tm; | 152 | p_tm tm = &udp->base_tm; |
| @@ -162,8 +174,8 @@ static int udp_lua_receivefrom(lua_State *L) | |||
| 162 | p_udp udp = (p_udp) lua_touserdata(L, 1); | 174 | p_udp udp = (p_udp) lua_touserdata(L, 1); |
| 163 | p_tm tm = &udp->base_tm; | 175 | p_tm tm = &udp->base_tm; |
| 164 | struct sockaddr_in peer; | 176 | struct sockaddr_in peer; |
| 165 | int peer_len = sizeof(peer); | 177 | size_t peer_len = sizeof(peer); |
| 166 | unsigned char buffer[UDP_DATAGRAMSIZE]; | 178 | char buffer[UDP_DATAGRAMSIZE]; |
| 167 | size_t wanted = (size_t) luaL_optnumber(L, 2, sizeof(buffer)); | 179 | size_t wanted = (size_t) luaL_optnumber(L, 2, sizeof(buffer)); |
| 168 | size_t got; | 180 | size_t got; |
| 169 | int err; | 181 | int err; |
