src/server/util/io.h

changeset 64
c7f5b062e622
parent 54
3a1d5a52adfc
child 65
14722c5f8856
equal deleted inserted replaced
63:66442f81f823 64:c7f5b062e622
36 #endif 36 #endif
37 37
38 typedef struct io_stream IOStream; 38 typedef struct io_stream IOStream;
39 39
40 typedef ssize_t(*io_write_f)(IOStream *, void *, size_t); 40 typedef ssize_t(*io_write_f)(IOStream *, void *, size_t);
41 typedef ssize_t(*io_writev_f)(IOStream *, struct iovec *, int);
41 typedef ssize_t(*io_read_f)(IOStream *, void *, size_t); 42 typedef ssize_t(*io_read_f)(IOStream *, void *, size_t);
42 typedef ssize_t(*io_sendfile_f)(IOStream *, sendfiledata *); 43 typedef ssize_t(*io_sendfile_f)(IOStream *, sendfiledata *);
43 44
44 struct io_stream { 45 struct io_stream {
45 io_write_f write; 46 io_write_f write;
47 io_writev_f writev;
46 io_read_f read; 48 io_read_f read;
47 io_sendfile_f sendfile; 49 io_sendfile_f sendfile;
48 }; 50 };
49 51
50 typedef struct SystemIOStream { 52 typedef struct SystemIOStream {
78 80
79 /* system stream */ 81 /* system stream */
80 IOStream* stream_new_from_fd(pool_handle_t *pool, int fd); 82 IOStream* stream_new_from_fd(pool_handle_t *pool, int fd);
81 83
82 ssize_t system_write(IOStream *st, void *buf, size_t nbytes); 84 ssize_t system_write(IOStream *st, void *buf, size_t nbytes);
85 ssize_t system_writev(IOStream *st, struct iovec *iovec, int iovcnt);
83 ssize_t system_read(IOStream *st, void *buf, size_t nbytes); 86 ssize_t system_read(IOStream *st, void *buf, size_t nbytes);
84 87
85 /* net stream */ 88 /* net stream */
86 IOStream* net_stream_from_fd(pool_handle_t *pool, int fd); 89 IOStream* net_stream_from_fd(pool_handle_t *pool, int fd);
87 90
88 ssize_t net_stream_write(IOStream *st, void *buf, size_t nbytes); 91 ssize_t net_stream_write(IOStream *st, void *buf, size_t nbytes);
92 ssize_t net_stream_writev(IOStream *st, struct iovec *iovec, int iovcnt);
89 ssize_t net_stream_read(IOStream *st, void *buf, size_t nbytes); 93 ssize_t net_stream_read(IOStream *st, void *buf, size_t nbytes);
90 ssize_t net_stream_sendfile(IOStream *st, sendfiledata *sfd); 94 ssize_t net_stream_sendfile(IOStream *st, sendfiledata *sfd);
91 95
92 /* iovec buffer */ 96 /* iovec buffer */
93 iovec_buf_t *iovec_buf_create(pool_handle_t *pool); 97 iovec_buf_t *iovec_buf_create(pool_handle_t *pool);

mercurial