annotate src/lib/ostream-file-private.h @ 23007:36e01285b5b8

lib: buffer - Improve header comment for buffer_insert() and buffer_delete().
author Stephan Bosch <stephan.bosch@dovecot.fi>
date Mon, 18 Mar 2019 00:52:37 +0100
parents d2d89eae7828
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
20859
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
1 #ifndef OSTREAM_FILE_PRIVATE_H
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
2 #define OSTREAM_FILE_PRIVATE_H
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
3
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
4 #include "ostream-private.h"
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
5
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
6 struct file_ostream {
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
7 struct ostream_private ostream;
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
8
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
9 ssize_t (*writev)(struct file_ostream *fstream,
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
10 const struct const_iovec *iov,
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
11 unsigned int iov_count);
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
12
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
13 int fd;
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
14 struct io *io;
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
15 uoff_t buffer_offset;
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
16 uoff_t real_offset;
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
17
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
18 unsigned char *buffer; /* ring-buffer */
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
19 size_t buffer_size, optimal_block_size;
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
20 size_t head, tail; /* first unsent/unused byte */
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
21
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
22 unsigned int full:1; /* if head == tail, is buffer empty or full? */
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
23 unsigned int file:1;
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
24 unsigned int flush_pending:1;
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
25 unsigned int socket_cork_set:1;
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
26 unsigned int no_socket_cork:1;
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
27 unsigned int no_sendfile:1;
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
28 unsigned int autoclose_fd:1;
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
29 };
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
30
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
31 struct ostream *
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
32 o_stream_create_file_common(struct file_ostream *fstream,
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
33 int fd, size_t max_buffer_size, bool autoclose_fd);
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
34 ssize_t o_stream_file_writev(struct file_ostream *fstream,
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
35 const struct const_iovec *iov,
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
36 unsigned int iov_size);
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
37 ssize_t o_stream_file_sendv(struct ostream_private *stream,
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
38 const struct const_iovec *iov,
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
39 unsigned int iov_count);
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
40 void o_stream_file_close(struct iostream_private *stream,
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
41 bool close_parent);
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
42
d2d89eae7828 lib: ostream-file: Allow creating derived file output streams.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
43 #endif