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); |