Mercurial > dovecot > core-2.2
annotate src/lib/ostream-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 | e593dce9468d |
children |
rev | line source |
---|---|
13529
cf77e448295c
Renamed lib/*-internal.h files to lib/*-private.h for consistency.
Timo Sirainen <tss@iki.fi>
parents:
13417
diff
changeset
|
1 #ifndef OSTREAM_PRIVATE_H |
cf77e448295c
Renamed lib/*-internal.h files to lib/*-private.h for consistency.
Timo Sirainen <tss@iki.fi>
parents:
13417
diff
changeset
|
2 #define OSTREAM_PRIVATE_H |
764
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
3 |
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
4 #include "ostream.h" |
13529
cf77e448295c
Renamed lib/*-internal.h files to lib/*-private.h for consistency.
Timo Sirainen <tss@iki.fi>
parents:
13417
diff
changeset
|
5 #include "iostream-private.h" |
764
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
6 |
6415
b0096861c390
Renamed struct _[io]stream to struct [io]stream_private. Also removed _
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
7 struct ostream_private { |
764
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
8 /* inheritance: */ |
6415
b0096861c390
Renamed struct _[io]stream to struct [io]stream_private. Also removed _
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
9 struct iostream_private iostream; |
764
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
10 |
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
11 /* methods: */ |
6415
b0096861c390
Renamed struct _[io]stream to struct [io]stream_private. Also removed _
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
12 void (*cork)(struct ostream_private *stream, bool set); |
b0096861c390
Renamed struct _[io]stream to struct [io]stream_private. Also removed _
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
13 int (*flush)(struct ostream_private *stream); |
13530
8c3c0e01e00d
Simplified creating filter ostreams.
Timo Sirainen <tss@iki.fi>
parents:
13529
diff
changeset
|
14 void (*set_flush_callback)(struct ostream_private *stream, |
8c3c0e01e00d
Simplified creating filter ostreams.
Timo Sirainen <tss@iki.fi>
parents:
13529
diff
changeset
|
15 stream_flush_callback_t *callback, |
8c3c0e01e00d
Simplified creating filter ostreams.
Timo Sirainen <tss@iki.fi>
parents:
13529
diff
changeset
|
16 void *context); |
6415
b0096861c390
Renamed struct _[io]stream to struct [io]stream_private. Also removed _
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
17 void (*flush_pending)(struct ostream_private *stream, bool set); |
7912
81806d402514
Added more consts, ATTR_CONSTs and ATTR_PUREs.
Timo Sirainen <tss@iki.fi>
parents:
6415
diff
changeset
|
18 size_t (*get_used_size)(const struct ostream_private *stream); |
6415
b0096861c390
Renamed struct _[io]stream to struct [io]stream_private. Also removed _
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
19 int (*seek)(struct ostream_private *stream, uoff_t offset); |
b0096861c390
Renamed struct _[io]stream to struct [io]stream_private. Also removed _
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
20 ssize_t (*sendv)(struct ostream_private *stream, |
b0096861c390
Renamed struct _[io]stream to struct [io]stream_private. Also removed _
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
21 const struct const_iovec *iov, |
3618
a16f27ce2eda
Changed iov_count to be unsigned int, it's large enough. Added overflow-flag
Timo Sirainen <tss@iki.fi>
parents:
3336
diff
changeset
|
22 unsigned int iov_count); |
9764 | 23 int (*write_at)(struct ostream_private *stream, |
24 const void *data, size_t size, uoff_t offset); | |
6415
b0096861c390
Renamed struct _[io]stream to struct [io]stream_private. Also removed _
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
25 off_t (*send_istream)(struct ostream_private *outstream, |
903
fd8888f6f037
Naming style changes, finally got tired of most of the typedefs. Also the
Timo Sirainen <tss@iki.fi>
parents:
764
diff
changeset
|
26 struct istream *instream); |
13417
977dcd541f69
Added o_stream_switch_ioloop() and implemented it to all ostreams.
Timo Sirainen <tss@iki.fi>
parents:
10708
diff
changeset
|
27 void (*switch_ioloop)(struct ostream_private *stream); |
764
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
28 |
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
29 /* data: */ |
903
fd8888f6f037
Naming style changes, finally got tired of most of the typedefs. Also the
Timo Sirainen <tss@iki.fi>
parents:
764
diff
changeset
|
30 struct ostream ostream; |
10083
bad043de6a7a
ostream: Simplified implementing ostreams.
Timo Sirainen <tss@iki.fi>
parents:
9764
diff
changeset
|
31 size_t max_buffer_size; |
2421
d141e1bfdd63
We never do blocking reads/writes to network anymore. Changed imap and pop3
Timo Sirainen <tss@iki.fi>
parents:
903
diff
changeset
|
32 |
13530
8c3c0e01e00d
Simplified creating filter ostreams.
Timo Sirainen <tss@iki.fi>
parents:
13529
diff
changeset
|
33 struct ostream *parent; /* for filter streams */ |
8c3c0e01e00d
Simplified creating filter ostreams.
Timo Sirainen <tss@iki.fi>
parents:
13529
diff
changeset
|
34 |
14851 | 35 int fd; |
2790
02c0b8d532c2
Changed ostream's flush callback to have return value which can tell if
Timo Sirainen <tss@iki.fi>
parents:
2421
diff
changeset
|
36 stream_flush_callback_t *callback; |
2421
d141e1bfdd63
We never do blocking reads/writes to network anymore. Changed imap and pop3
Timo Sirainen <tss@iki.fi>
parents:
903
diff
changeset
|
37 void *context; |
10708
3b544841d5d7
ostream: If cork method isn't implemented, keep track of corking state internally.
Timo Sirainen <tss@iki.fi>
parents:
10083
diff
changeset
|
38 |
3b544841d5d7
ostream: If cork method isn't implemented, keep track of corking state internally.
Timo Sirainen <tss@iki.fi>
parents:
10083
diff
changeset
|
39 unsigned int corked:1; |
16998
e3a87c25e0b2
ostream: Don't mark the stream closed too early after all.
Timo Sirainen <tss@iki.fi>
parents:
14851
diff
changeset
|
40 unsigned int closing:1; |
14681
ca37d1577291
Added o_stream_nsend*() and related functions to make delayed error handling safer.
Timo Sirainen <tss@iki.fi>
parents:
14629
diff
changeset
|
41 unsigned int last_errors_not_checked:1; |
ca37d1577291
Added o_stream_nsend*() and related functions to make delayed error handling safer.
Timo Sirainen <tss@iki.fi>
parents:
14629
diff
changeset
|
42 unsigned int error_handling_disabled:1; |
764
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
43 }; |
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
44 |
13530
8c3c0e01e00d
Simplified creating filter ostreams.
Timo Sirainen <tss@iki.fi>
parents:
13529
diff
changeset
|
45 struct ostream * |
14851 | 46 o_stream_create(struct ostream_private *_stream, struct ostream *parent, int fd) |
14629
c93ca5e46a8a
Marked functions parameters that are allowed to be NULL. Some APIs were also changed.
Timo Sirainen <tss@iki.fi>
parents:
13530
diff
changeset
|
47 ATTR_NULL(2); |
764
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
48 |
17698
e593dce9468d
lib: io_stream_copy() no longer attempts to read full block sizes from input.
Timo Sirainen <tss@iki.fi>
parents:
17590
diff
changeset
|
49 off_t io_stream_copy(struct ostream *outstream, struct istream *instream); |
9557
e41c648a2f4c
ostreams: Moved generic o_stream_send_istream() implementation to ostream.c.
Timo Sirainen <tss@iki.fi>
parents:
8923
diff
changeset
|
50 |
13530
8c3c0e01e00d
Simplified creating filter ostreams.
Timo Sirainen <tss@iki.fi>
parents:
13529
diff
changeset
|
51 void o_stream_copy_error_from_parent(struct ostream_private *_stream); |
17590
5740cb57d02c
lib: Added o_stream_flush_parent_if_needed() for wrapper ostreams.
Timo Sirainen <tss@iki.fi>
parents:
16998
diff
changeset
|
52 /* This should be called before sending data to parent stream. It makes sure |
5740cb57d02c
lib: Added o_stream_flush_parent_if_needed() for wrapper ostreams.
Timo Sirainen <tss@iki.fi>
parents:
16998
diff
changeset
|
53 that the parent stream's output buffer doesn't become too large. |
5740cb57d02c
lib: Added o_stream_flush_parent_if_needed() for wrapper ostreams.
Timo Sirainen <tss@iki.fi>
parents:
16998
diff
changeset
|
54 Returns 1 if more data can be safely added, 0 if not, -1 if error. */ |
5740cb57d02c
lib: Added o_stream_flush_parent_if_needed() for wrapper ostreams.
Timo Sirainen <tss@iki.fi>
parents:
16998
diff
changeset
|
55 int o_stream_flush_parent_if_needed(struct ostream_private *_stream); |
13530
8c3c0e01e00d
Simplified creating filter ostreams.
Timo Sirainen <tss@iki.fi>
parents:
13529
diff
changeset
|
56 |
764
f57c52738f90
Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
57 #endif |