1
0
mirror of https://github.com/elua/elua.git synced 2025-01-08 20:56:17 +08:00
elua/inc/elua_net.h
Bogdan Marinescu 05ddf01cf3 - fixed a serious bug in the implementation of the eLua UIP support code. Now one can have multiple TCP/IP connection _without_ mixing the data buffers between them :)
- added the resolver application (src/uip/resolv.*) to eLua (configurable by BUILD_DNS in build.h) to allow DNS lookups
- more functions in the "net" module, more tests, it seems to work fine now in both "server mode" and "client mode"
- console over TCP works once again, or should I say "now works". It turns out that it never worked with the code in SVN, because I committed a wrong file a while ago.
2008-09-23 19:39:14 +00:00

54 lines
1.3 KiB
C

// Network services provided by eLua
#ifndef __ELUA_NET_H__
#define __ELUA_NET_H__
#include "type.h"
#include "lauxlib.h"
// eLua network typedefs
typedef s16 elua_net_size;
// eLua net error codes
enum
{
ELUA_NET_ERR_OK = 0,
ELUA_NET_ERR_TIMEDOUT,
ELUA_NET_ERR_CLOSED,
ELUA_NET_ERR_ABORTED,
ELUA_NET_ERR_OVERFLOW
};
// eLua IP address type
typedef union
{
u32 ipaddr;
u8 ipbytes[ 4 ];
u16 ipwords[ 2 ];
} elua_net_ip;
// eLua services ports
#define ELUA_NET_TELNET_PORT 23
// Different constants
#define ELUA_NET_SOCK_STREAM 0
#define ELUA_NET_SOCK_DGRAM 1
// 'no lastchar' for read to char (recv)
#define ELUA_NET_NO_LASTCHAR ( -1 )
// eLua TCP/IP functions
int elua_net_socket( int type );
int elua_net_close( int s );
elua_net_size elua_net_recvbuf( int s, luaL_Buffer *buf, elua_net_size maxsize, s16 readto, unsigned timer_id, u32 to_us );
elua_net_size elua_net_recv( int s, void *buf, elua_net_size maxsize, s16 readto, unsigned timer_id, u32 to_us );
elua_net_size elua_net_send( int s, const void* buf, elua_net_size len );
int elua_accept( u16 port, unsigned timer_id, u32 to_us, elua_net_ip* pfrom );
int elua_net_connect( int s, elua_net_ip addr, u16 port );
elua_net_ip elua_net_lookup( const char* hostname );
int elua_net_get_last_err( int s );
int elua_net_get_telnet_socket();
#endif