annotate src/lib/istream-data.c @ 22664:fea53c2725c0

director: Fix director_max_parallel_moves/kicks type Should be uint, not time.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Thu, 09 Nov 2017 12:24:16 +0200
parents 2e2563132d5f
children cb108f786fb4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21390
2e2563132d5f Updated copyright notices to include the year 2017.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents: 20640
diff changeset
1 /* Copyright (c) 2002-2017 Dovecot authors, see the included COPYING file */
764
f57c52738f90 Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2
f57c52738f90 Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3 #include "lib.h"
13529
cf77e448295c Renamed lib/*-internal.h files to lib/*-private.h for consistency.
Timo Sirainen <tss@iki.fi>
parents: 12782
diff changeset
4 #include "istream-private.h"
764
f57c52738f90 Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
5
6420
a8b515e1a26f Removed _ prefixes from function names.
Timo Sirainen <tss@iki.fi>
parents: 6419
diff changeset
6 static ssize_t i_stream_data_read(struct istream_private *stream)
764
f57c52738f90 Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
7 {
2431
8e9d8cb1e674 Removed istream.disconnected, it's too much of a special case and the only
Timo Sirainen <tss@iki.fi>
parents: 2421
diff changeset
8 stream->istream.eof = TRUE;
1667
Timo Sirainen <tss@iki.fi>
parents: 953
diff changeset
9 return -1;
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
6420
a8b515e1a26f Removed _ prefixes from function names.
Timo Sirainen <tss@iki.fi>
parents: 6419
diff changeset
12 static void i_stream_data_seek(struct istream_private *stream, uoff_t v_offset,
a8b515e1a26f Removed _ prefixes from function names.
Timo Sirainen <tss@iki.fi>
parents: 6419
diff changeset
13 bool mark ATTR_UNUSED)
764
f57c52738f90 Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
14 {
f57c52738f90 Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
15 stream->skip = v_offset;
f57c52738f90 Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
16 stream->istream.v_offset = v_offset;
f57c52738f90 Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
17 }
f57c52738f90 Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
18
6142
6c0bfc35af03 Removed memory pool parameter from iostreams. Default pool was almost always
Timo Sirainen <tss@iki.fi>
parents: 5483
diff changeset
19 struct istream *i_stream_create_from_data(const void *data, size_t size)
764
f57c52738f90 Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
20 {
6415
b0096861c390 Renamed struct _[io]stream to struct [io]stream_private. Also removed _
Timo Sirainen <tss@iki.fi>
parents: 6411
diff changeset
21 struct istream_private *stream;
764
f57c52738f90 Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
22
6415
b0096861c390 Renamed struct _[io]stream to struct [io]stream_private. Also removed _
Timo Sirainen <tss@iki.fi>
parents: 6411
diff changeset
23 stream = i_new(struct istream_private, 1);
764
f57c52738f90 Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
24 stream->buffer = data;
f57c52738f90 Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
25 stream->pos = size;
13890
899a2359450a istream-data: Avoid assert crashing due to recently added assert.
Timo Sirainen <tss@iki.fi>
parents: 13529
diff changeset
26 stream->max_buffer_size = (size_t)-1;
764
f57c52738f90 Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
27
6420
a8b515e1a26f Removed _ prefixes from function names.
Timo Sirainen <tss@iki.fi>
parents: 6419
diff changeset
28 stream->read = i_stream_data_read;
a8b515e1a26f Removed _ prefixes from function names.
Timo Sirainen <tss@iki.fi>
parents: 6419
diff changeset
29 stream->seek = i_stream_data_seek;
764
f57c52738f90 Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
30
9540
622509c562e8 Added struct istream.readable_fd, which is used to determine if sendfile() can be used.
Timo Sirainen <tss@iki.fi>
parents: 8590
diff changeset
31 stream->istream.readable_fd = FALSE;
5106
81394e71f92a Added istream->blocking setting. It's now used to assert-crash early if a
Timo Sirainen <tss@iki.fi>
parents: 3863
diff changeset
32 stream->istream.blocking = TRUE;
3239
904a268921af Added seekable variable to struct istream.
Timo Sirainen <tss@iki.fi>
parents: 2431
diff changeset
33 stream->istream.seekable = TRUE;
14688
128c598d2870 Avoid using (void)s by adding ATTR_NOWARN_UNUSED_RESULT attributes and other ways.
Timo Sirainen <tss@iki.fi>
parents: 14133
diff changeset
34 i_stream_create(stream, NULL, -1);
5483
Timo Sirainen <tss@iki.fi>
parents: 5479
diff changeset
35 stream->statbuf.st_size = size;
14697
69334bf138cf istreams: Set (file), (fd) or (buffer) as default name for those input streams.
Timo Sirainen <tss@iki.fi>
parents: 14688
diff changeset
36 i_stream_set_name(&stream->istream, "(buffer)");
5483
Timo Sirainen <tss@iki.fi>
parents: 5479
diff changeset
37 return &stream->istream;
764
f57c52738f90 Renamed IBuffer and OBuffer to IStream and OStream which describes their
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
38 }
20640
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
39
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
40 static void i_stream_copied_data_free(void *data)
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
41 {
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
42 i_free(data);
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
43 }
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
44 struct istream *
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
45 i_stream_create_copy_from_data(const void *data, size_t size)
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
46 {
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
47 struct istream *stream;
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
48 void *buffer;
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
49
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
50 if (size == 0) {
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
51 buffer = "";
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
52 } else {
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
53 buffer = i_malloc(size);
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
54 memcpy(buffer, data, size);
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
55 }
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
56 stream = i_stream_create_from_data(buffer, size);
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
57 if (size > 0) {
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
58 i_stream_add_destroy_callback
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
59 (stream, i_stream_copied_data_free, buffer);
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
60 }
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
61 return stream;
9f7806638fa3 lib: Implemented i_stream_create_copy_from_data().
Stephan Bosch <stephan@rename-it.nl>
parents: 19552
diff changeset
62 }