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 a9e69c72d4 Update net module with the new timer infrastructure
- change timeouts in elua_uip.c to the timer data type
- make all timer IDs in the net module default to the system timer
2011-10-08 23:24:19 +03:00

55 lines
1.4 KiB
C

// Network services provided by eLua
#ifndef __ELUA_NET_H__
#define __ELUA_NET_H__
#include "type.h"
#include "lauxlib.h"
#include "platform.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, timer_data_type to_us );
elua_net_size elua_net_recv( int s, void *buf, elua_net_size maxsize, s16 readto, unsigned timer_id, timer_data_type 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, timer_data_type 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