return total;
}
+static size_t
+o_stream_multiplex_ochannel_get_buffer_used_size(const struct ostream_private *stream)
+{
+ const struct multiplex_ochannel *channel =
+ (const struct multiplex_ochannel*)stream;
+
+ return channel->buf->used + channel->mstream->wbuf->used +
+ o_stream_get_buffer_used_size(channel->mstream->parent);
+}
+
+static size_t
+o_stream_multiplex_ochannel_get_buffer_avail_size(const struct ostream_private *stream)
+{
+ const struct multiplex_ochannel *channel =
+ (const struct multiplex_ochannel*)stream;
+
+ return channel->mstream->bufsize <= channel->buf->used ? 0 :
+ channel->mstream->bufsize - channel->buf->used;
+}
+
static void
o_stream_multiplex_ochannel_close(struct iostream_private *stream, bool close_parent)
{
channel->buf = buffer_create_dynamic(default_pool, 256);
channel->mstream = mstream;
channel->ostream.sendv = o_stream_multiplex_ochannel_sendv;
+ channel->ostream.get_buffer_used_size =
+ o_stream_multiplex_ochannel_get_buffer_used_size;
+ channel->ostream.get_buffer_avail_size =
+ o_stream_multiplex_ochannel_get_buffer_avail_size;
channel->ostream.iostream.close = o_stream_multiplex_ochannel_close;
channel->ostream.iostream.destroy = o_stream_multiplex_ochannel_destroy;
channel->ostream.fd = o_stream_get_fd(mstream->parent);