src/server/util/io.h

changeset 110
43a746e905f6
parent 106
b122f34ddc80
child 112
b962d83124bc
--- a/src/server/util/io.h	Sat Oct 31 20:10:21 2015 +0100
+++ b/src/server/util/io.h	Tue Nov 10 21:11:06 2015 +0100
@@ -30,14 +30,21 @@
 #define	IOSTREAM_H
 
 #include <openssl/ssl.h> 
+#include "../public/nsapi.h"
+#include "systems.h"
 
-#include "../public/nsapi.h"
+#ifdef _WIN32
+#include <windows.h>
+#include <winsock2.h>
+#endif
 
 #ifdef	__cplusplus
 extern "C" {
 #endif
 
-typedef struct io_stream IOStream;
+typedef struct IOStream     IOStream;
+typedef struct SysStream    SysStream;
+typedef struct HttpStream   HttpStream;
 
 typedef ssize_t(*io_write_f)(IOStream *, void *, size_t);
 typedef ssize_t(*io_writev_f)(IOStream *, struct iovec *, int);
@@ -46,7 +53,7 @@
 typedef void(*io_close_f)(IOStream *);
 typedef void(*io_finish_f)(IOStream *);
 
-struct io_stream {
+struct IOStream {
     io_write_f    write;
     io_writev_f   writev;
     io_read_f     read;
@@ -55,19 +62,23 @@
     io_finish_f   finish;
 };
 
-typedef struct SystemIOStream {
-    IOStream st;
-    int      fd;
-} SystemIOStream;
-
-typedef struct NetIOStream {
+struct SysStream {
     IOStream st;
+#ifdef XP_UNIX
     int      fd;
-    size_t   max_read;
-    size_t   read;
-    int      chunked_enc;
-    int      buffered;
-} NetIOStream;
+#elif defined(XP_WIN32)
+    SOCKET   socket;
+#endif
+};
+
+struct HttpStream {
+    IOStream st;
+    IOStream *fd;
+    uint64_t max_read;
+    uint64_t read;
+    WSBool   chunked_enc;
+    WSBool   buffered;
+};
 
 typedef struct SSLStream {
     IOStream st;
@@ -75,42 +86,28 @@
 } SSLStream;
 
 
-/* net_ functions */
-ssize_t net_read(SYS_NETFD fd, void *buf, size_t nbytes);
-ssize_t net_write(SYS_NETFD fd, void *buf, size_t nbytes);
-ssize_t net_printf(SYS_NETFD fd, char *format, ...);
-ssize_t net_sendfile(SYS_NETFD fd, sendfiledata *sfd);
-void    net_close(SYS_NETFD fd);
-void    net_finish(SYS_NETFD fd);
-
-/* iovec buffer */
-typedef struct iovec_buf{
-    struct iovec   *iov;
-    int            iovctn;
-    int            maxiovec;
-    pool_handle_t  *pool;
-} iovec_buf_t;
-
 
 /* system stream */
-IOStream* stream_new_from_fd(pool_handle_t *pool, int fd);
+IOStream* sysstream_new(pool_handle_t *pool, int fd);
 
-ssize_t system_write(IOStream *st, void *buf, size_t nbytes);
-ssize_t system_writev(IOStream *st, struct iovec *iovec, int iovcnt);
-ssize_t system_read(IOStream *st, void *buf, size_t nbytes);
+ssize_t net_sys_write(SysStream *st, void *buf, size_t nbytes);
+ssize_t net_sys_writev(SysStream *st, struct iovec *iovec, int iovcnt);
+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);
 
-/* net stream */
-IOStream* net_stream_from_fd(pool_handle_t *pool, int fd);
+/* http stream */
+IOStream* httpstream_new(pool_handle_t *pool, IOStream *fd);
 
-ssize_t net_stream_write(NetIOStream *st, void *buf, size_t nbytes);
-ssize_t net_stream_writev(NetIOStream *st, struct iovec *iovec, int iovcnt);
-ssize_t net_stream_read(NetIOStream *st, void *buf, size_t nbytes);
-ssize_t net_stream_sendfile(NetIOStream *st, sendfiledata *sfd);
-void    net_stream_close(NetIOStream *st);
-void    net_stream_finish(NetIOStream *st);
+ssize_t net_http_write(HttpStream *st, void *buf, size_t nbytes);
+ssize_t net_http_writev(HttpStream *st, struct iovec *iovec, int iovcnt);
+ssize_t net_http_read(HttpStream *st, void *buf, size_t nbytes);
+ssize_t net_http_sendfile(HttpStream *st, sendfiledata *sfd);
+void    net_http_close(HttpStream *st);
+void    net_http_finish(HttpStream *st);
 
 /* ssl stream */
-IOStream* net_ssl_stream(pool_handle_t *pool, SSL *ssl);
+IOStream* sslstream_new(pool_handle_t *pool, SSL *ssl);
 
 ssize_t net_ssl_write(SSLStream *st, void *buf, size_t nbytes);
 ssize_t net_ssl_writev(SSLStream *st, struct iovec *iovec, int iovcnt);
@@ -118,19 +115,9 @@
 void    net_ssl_close(SSLStream *st);
 void    net_ssl_finish(SSLStream *st);
 
-/* iovec buffer */
-iovec_buf_t *iovec_buf_create(pool_handle_t *pool);
-void iovec_buf_write(iovec_buf_t *io, void *buf, size_t nbyte);
-ssize_t iovec_buf_flush(iovec_buf_t *io, int fd);
-
-
-
-#ifdef __SunOS_5_10
-
-int vasprintf(char **str, const char *format, va_list ap);
-int asprintf(char **str, const char *format, ...);
-
-#endif
+/* net_ functions */
+ssize_t net_copy_file(IOStream *fd, sendfiledata *sfd);
+void    net_finish(SYS_NETFD fd);
 
 #ifdef	__cplusplus
 }

mercurial