aboutsummaryrefslogtreecommitdiff
path: root/src/io.h
diff options
context:
space:
mode:
authorDiego Nehab <diego@tecgraf.puc-rio.br>2004-07-01 03:32:09 +0000
committerDiego Nehab <diego@tecgraf.puc-rio.br>2004-07-01 03:32:09 +0000
commit7115c12fbc9aae1cd46fdf049697a27fb996181a (patch)
tree2e918f54f729766701aabdef488a6461bc623da1 /src/io.h
parent7aaba59909e8527190694285f56ca68772c97f6a (diff)
downloadluasocket-7115c12fbc9aae1cd46fdf049697a27fb996181a.tar.gz
luasocket-7115c12fbc9aae1cd46fdf049697a27fb996181a.tar.bz2
luasocket-7115c12fbc9aae1cd46fdf049697a27fb996181a.zip
Moving on to beta2.
Diffstat (limited to 'src/io.h')
-rw-r--r--src/io.h22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/io.h b/src/io.h
index 495bdc6..72602dd 100644
--- a/src/io.h
+++ b/src/io.h
@@ -17,14 +17,15 @@
17#include <stdio.h> 17#include <stdio.h>
18#include <lua.h> 18#include <lua.h>
19 19
20#include "timeout.h"
21
20/* IO error codes */ 22/* IO error codes */
21enum { 23enum {
22 IO_DONE, /* operation completed successfully */ 24 IO_DONE, /* operation completed successfully */
23 IO_RETRY, /* please try again */
24 IO_TIMEOUT, /* operation timed out */ 25 IO_TIMEOUT, /* operation timed out */
25 IO_CLOSED, /* the connection has been closed */ 26 IO_CLOSED, /* the connection has been closed */
26 IO_REFUSED, /* transfer has been refused */ 27 IO_CLIPPED, /* maxium bytes count reached */
27 IO_ERROR /* something else wrong... */ 28 IO_USER /* last element in enum is user custom error */
28}; 29};
29 30
30/* interface to send function */ 31/* interface to send function */
@@ -33,7 +34,13 @@ typedef int (*p_send) (
33 const char *data, /* pointer to buffer with data to send */ 34 const char *data, /* pointer to buffer with data to send */
34 size_t count, /* number of bytes to send from buffer */ 35 size_t count, /* number of bytes to send from buffer */
35 size_t *sent, /* number of bytes sent uppon return */ 36 size_t *sent, /* number of bytes sent uppon return */
36 int timeout /* number of miliseconds left for transmission */ 37 p_tm tm /* timeout control */
38);
39
40/* returns an error string */
41typedef const char *(*p_geterr) (
42 void *ctx, /* context needed by geterror */
43 int code /* error code */
37); 44);
38 45
39/* interface to recv function */ 46/* interface to recv function */
@@ -42,7 +49,7 @@ typedef int (*p_recv) (
42 char *data, /* pointer to buffer where data will be writen */ 49 char *data, /* pointer to buffer where data will be writen */
43 size_t count, /* number of bytes to receive into buffer */ 50 size_t count, /* number of bytes to receive into buffer */
44 size_t *got, /* number of bytes received uppon return */ 51 size_t *got, /* number of bytes received uppon return */
45 int timeout /* number of miliseconds left for transmission */ 52 p_tm tm /* timeout control */
46); 53);
47 54
48/* IO driver definition */ 55/* IO driver definition */
@@ -50,11 +57,12 @@ typedef struct t_io_ {
50 void *ctx; /* context needed by send/recv */ 57 void *ctx; /* context needed by send/recv */
51 p_send send; /* send function pointer */ 58 p_send send; /* send function pointer */
52 p_recv recv; /* receive function pointer */ 59 p_recv recv; /* receive function pointer */
60 p_geterr geterr; /* receive function pointer */
53} t_io; 61} t_io;
54typedef t_io *p_io; 62typedef t_io *p_io;
55 63
56const char *io_strerror(int code); 64const char *io_strerror(int code);
57void io_pusherror(lua_State *L, int code); 65void io_pusherror(lua_State *L, p_io io, int code);
58void io_init(p_io io, p_send send, p_recv recv, void *ctx); 66void io_init(p_io io, p_send send, p_recv recv, p_geterr geterr, void *ctx);
59 67
60#endif /* IO_H */ 68#endif /* IO_H */