}
static size_t
-o_stream_buffer_get_buffer_used_size(const struct ostream_private *stream ATTR_UNUSED)
+o_stream_buffer_get_buffer_used_size(const struct ostream_private *stream)
{
- /* Don't treat the destination buffer as the ostream buffer size.
- Otherwise ostream-buffer can't be used in a normal way in some
- places that stop sending more data to it if the buffer size grows
- beyond IO_BLOCK_SIZE. */
- return 0;
+ struct buffer_ostream *bstream = (struct buffer_ostream *)stream;
+
+ return bstream->buf->used;
}
struct ostream *o_stream_create_buffer(buffer_t *buf)
test_begin("ostream buffer size/available");
output = o_stream_create_buffer(str);
- test_assert(str_len(str) == 0);
+ test_assert(o_stream_get_buffer_used_size(output) == 0);
test_assert(o_stream_get_buffer_avail_size(output) == (size_t)-1);
/* test shrinking sink's max buffer size */
o_stream_set_max_buffer_size(output, 10);
- test_assert(str_len(str) == 0);
+ test_assert(o_stream_get_buffer_used_size(output) == 0);
test_assert(o_stream_get_buffer_avail_size(output) == 10);
/* partial send */
const char *partial_input = "01234567890123456789";
ssize_t ret = o_stream_send_str(output, partial_input);
test_assert(ret == 10);
- test_assert(str_len(str) == 10);
- test_assert(o_stream_get_buffer_avail_size(output) == 10);
+ test_assert(o_stream_get_buffer_used_size(output) == 10);
+ test_assert(o_stream_get_buffer_avail_size(output) == 0);
/* increase max buffer size so that it can hold the whole message */
o_stream_set_max_buffer_size(output, 100);
- test_assert(str_len(str) == 10);
- test_assert(o_stream_get_buffer_avail_size(output) == 100);
+ test_assert(o_stream_get_buffer_used_size(output) == 10);
+ test_assert(o_stream_get_buffer_avail_size(output) == 90);
/* send the rest */
ret += o_stream_send_str(output, partial_input + ret);
test_assert(ret == (ssize_t)strlen(partial_input));
test_assert(output->offset == str_len(str));
- test_assert(str_len(str) == 20);
-
- /* used size is always 0 */
- test_assert(o_stream_get_buffer_used_size(output) == 0);
+ test_assert(o_stream_get_buffer_used_size(output) == 20);
+ test_assert(o_stream_get_buffer_avail_size(output) == 80);
/* check buffered data */
test_assert(strcmp(str_c(str), partial_input) == 0);