Lines Matching full:io
45 iobuf_init(struct iobuf *io, size_t size, size_t max) in iobuf_init() argument
47 memset(io, 0, sizeof *io); in iobuf_init()
58 if ((io->buf = calloc(size, 1)) == NULL) in iobuf_init()
61 io->size = size; in iobuf_init()
62 io->max = max; in iobuf_init()
68 iobuf_clear(struct iobuf *io) in iobuf_clear() argument
72 free(io->buf); in iobuf_clear()
74 while ((q = io->outq)) { in iobuf_clear()
75 io->outq = q->next; in iobuf_clear()
79 memset(io, 0, sizeof (*io)); in iobuf_clear()
83 iobuf_drain(struct iobuf *io, size_t n) in iobuf_drain() argument
88 while ((q = io->outq) && left) { in iobuf_drain()
94 io->outq = q->next; in iobuf_drain()
99 io->queued -= (n - left); in iobuf_drain()
100 if (io->outq == NULL) in iobuf_drain()
101 io->outqlast = NULL; in iobuf_drain()
105 iobuf_extend(struct iobuf *io, size_t n) in iobuf_extend() argument
109 if (n > io->max) in iobuf_extend()
112 if (io->max - io->size < n) in iobuf_extend()
115 t = recallocarray(io->buf, io->size, io->size + n, 1); in iobuf_extend()
119 io->size += n; in iobuf_extend()
120 io->buf = t; in iobuf_extend()
126 iobuf_left(struct iobuf *io) in iobuf_left() argument
128 return io->size - io->wpos; in iobuf_left()
132 iobuf_space(struct iobuf *io) in iobuf_space() argument
134 return io->size - (io->wpos - io->rpos); in iobuf_space()
138 iobuf_len(struct iobuf *io) in iobuf_len() argument
140 return io->wpos - io->rpos; in iobuf_len()
144 iobuf_data(struct iobuf *io) in iobuf_data() argument
146 return io->buf + io->rpos; in iobuf_data()
150 iobuf_drop(struct iobuf *io, size_t n) in iobuf_drop() argument
152 if (n >= iobuf_len(io)) { in iobuf_drop()
153 io->rpos = io->wpos = 0; in iobuf_drop()
157 io->rpos += n; in iobuf_drop()
190 iobuf_normalize(struct iobuf *io) in iobuf_normalize() argument
192 if (io->rpos == 0) in iobuf_normalize()
195 if (io->rpos == io->wpos) { in iobuf_normalize()
196 io->rpos = io->wpos = 0; in iobuf_normalize()
200 memmove(io->buf, io->buf + io->rpos, io->wpos - io->rpos); in iobuf_normalize()
201 io->wpos -= io->rpos; in iobuf_normalize()
202 io->rpos = 0; in iobuf_normalize()
206 iobuf_read(struct iobuf *io, int fd) in iobuf_read() argument
210 n = read(fd, io->buf + io->wpos, iobuf_left(io)); in iobuf_read()
220 io->wpos += n; in iobuf_read()
226 ioqbuf_alloc(struct iobuf *io, size_t len) in ioqbuf_alloc() argument
242 if (io->outqlast == NULL) in ioqbuf_alloc()
243 io->outq = q; in ioqbuf_alloc()
245 io->outqlast->next = q; in ioqbuf_alloc()
246 io->outqlast = q; in ioqbuf_alloc()
252 iobuf_queued(struct iobuf *io) in iobuf_queued() argument
254 return io->queued; in iobuf_queued()
258 iobuf_reserve(struct iobuf *io, size_t len) in iobuf_reserve() argument
266 if (((q = io->outqlast) == NULL) || q->size - q->wpos <= len) { in iobuf_reserve()
267 if ((q = ioqbuf_alloc(io, len)) == NULL) in iobuf_reserve()
273 io->queued += len; in iobuf_reserve()
279 iobuf_queue(struct iobuf *io, const void *data, size_t len) in iobuf_queue() argument
286 if ((buf = iobuf_reserve(io, len)) == NULL) in iobuf_queue()
295 iobuf_queuev(struct iobuf *io, const struct iovec *iov, int iovcnt) in iobuf_queuev() argument
304 if ((buf = iobuf_reserve(io, len)) == NULL) in iobuf_queuev()
319 iobuf_fqueue(struct iobuf *io, const char *fmt, ...) in iobuf_fqueue() argument
325 len = iobuf_vfqueue(io, fmt, ap); in iobuf_fqueue()
332 iobuf_vfqueue(struct iobuf *io, const char *fmt, va_list ap) in iobuf_vfqueue() argument
342 len = iobuf_queue(io, buf, len); in iobuf_vfqueue()
349 iobuf_write(struct iobuf *io, int fd) in iobuf_write() argument
357 for (q = io->outq; q ; q = q->next) { in iobuf_write()
374 iobuf_drain(io, n); in iobuf_write()
380 iobuf_flush(struct iobuf *io, int fd) in iobuf_flush() argument
384 while (io->queued) in iobuf_flush()
385 if ((s = iobuf_write(io, fd)) < 0) in iobuf_flush()
394 iobuf_flush_ssl(struct iobuf *io, void *ssl) in iobuf_flush_ssl() argument
398 while (io->queued) in iobuf_flush_ssl()
399 if ((s = iobuf_write_ssl(io, ssl)) < 0) in iobuf_flush_ssl()
406 iobuf_write_ssl(struct iobuf *io, void *ssl) in iobuf_write_ssl() argument
412 q = io->outq; in iobuf_write_ssl()
432 iobuf_drain(io, n); in iobuf_write_ssl()
438 iobuf_read_ssl(struct iobuf *io, void *ssl) in iobuf_read_ssl() argument
443 n = SSL_read(ssl, io->buf + io->wpos, iobuf_left(io)); in iobuf_read_ssl()
462 io->wpos += n; in iobuf_read_ssl()