Mercurial > dovecot > core-2.2
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 |
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 |