src/server/util/io.h

branch
aio
changeset 172
5580517faafc
parent 147
d050449c3b9e
child 193
aa8393527b1e
--- a/src/server/util/io.h	Sat Feb 04 16:42:11 2017 +0100
+++ b/src/server/util/io.h	Sat Feb 18 13:27:25 2017 +0100
@@ -48,6 +48,13 @@
 #define SYS_SOCKET SOCKET
 #endif
 
+#define IO_MODE_BLOCKING    0
+#define IO_MODE_NONBLOCKING 1
+    
+#define IO_POLL_NONE        0
+#define IO_POLL_IN          1
+#define IO_POLL_OUT         2
+    
 typedef struct IOStream     IOStream;
 typedef struct SysStream    SysStream;
 typedef struct HttpStream   HttpStream;
@@ -58,6 +65,8 @@
 typedef ssize_t(*io_sendfile_f)(IOStream *, sendfiledata *);
 typedef void(*io_close_f)(IOStream *);
 typedef void(*io_finish_f)(IOStream *);
+typedef void(*io_setmode_f)(IOStream *, int);
+typedef int(*io_poll_f)(IOStream *, EventHandler *, int, Event *);
 
 struct IOStream {
     io_write_f    write;
@@ -66,6 +75,9 @@
     io_sendfile_f sendfile;
     io_close_f    close;
     io_finish_f   finish;
+    io_setmode_f  setmode;
+    io_poll_f     poll;
+    int           io_errno;
 };
 
 struct SysStream {
@@ -102,6 +114,8 @@
 ssize_t net_sys_read(SysStream *st, void *buf, size_t nbytes);
 ssize_t net_sys_sendfile(SysStream *st, sendfiledata *sfd);
 void net_sys_close(SysStream *st);
+void net_sys_setmode(SysStream *st, int mode);
+int net_sys_poll(SysStream *st, EventHandler *ev, int events, Event *cb);
 
 /* http stream */
 IOStream* httpstream_new(pool_handle_t *pool, IOStream *fd);
@@ -112,6 +126,8 @@
 ssize_t net_http_sendfile(HttpStream *st, sendfiledata *sfd);
 void    net_http_close(HttpStream *st);
 void    net_http_finish(HttpStream *st);
+void    net_http_setmode(HttpStream *st, int mode);
+int     net_http_poll(HttpStream *st, EventHandler *ev, int events, Event *cb);
 
 /* ssl stream */
 IOStream* sslstream_new(pool_handle_t *pool, SSL *ssl);
@@ -121,6 +137,8 @@
 ssize_t net_ssl_read(SSLStream *st, void *buf, size_t nbytes);
 void    net_ssl_close(SSLStream *st);
 void    net_ssl_finish(SSLStream *st);
+void    net_ssl_setmode(SSLStream *st, int mode);
+int     net_ssl_poll(SSLStream *st, EventHandler *ev, int events, Event *cb);
 
 /* net_ functions */
 ssize_t net_fallback_sendfile(IOStream *fd, sendfiledata *sfd);

mercurial