ostream.c revision 8cdb3234fe3c77e477c7a0e6934678f58fc54d4d
45312f52ff3a3d4c137447be4c7556500c2f8bf2Timo Sirainen/* Copyright (c) 2002-2009 Dovecot authors, see the included COPYING file */
252db51b6c0a605163326b3ea5d09e9936ca3b29Timo Sirainen io_stream_ref(&stream->real_stream->iostream);
252db51b6c0a605163326b3ea5d09e9936ca3b29Timo Sirainen io_stream_unref(&(*stream)->real_stream->iostream);
252db51b6c0a605163326b3ea5d09e9936ca3b29Timo Sirainen io_stream_close(&stream->real_stream->iostream);
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainenvoid o_stream_set_flush_callback(struct ostream *stream,
252db51b6c0a605163326b3ea5d09e9936ca3b29Timo Sirainen struct ostream_private *_stream = stream->real_stream;
59151b71059df1190acd75d8717ed04a7920c862Timo Sirainenvoid o_stream_unset_flush_callback(struct ostream *stream)
252db51b6c0a605163326b3ea5d09e9936ca3b29Timo Sirainen struct ostream_private *_stream = stream->real_stream;
c0435c854a0e7246373b9752d163095cc4fbe985Timo Sirainenvoid o_stream_set_max_buffer_size(struct ostream *stream, size_t max_size)
252db51b6c0a605163326b3ea5d09e9936ca3b29Timo Sirainen io_stream_set_max_buffer_size(&stream->real_stream->iostream, max_size);
252db51b6c0a605163326b3ea5d09e9936ca3b29Timo Sirainen struct ostream_private *_stream = stream->real_stream;
252db51b6c0a605163326b3ea5d09e9936ca3b29Timo Sirainen struct ostream_private *_stream = stream->real_stream;
252db51b6c0a605163326b3ea5d09e9936ca3b29Timo Sirainen struct ostream_private *_stream = stream->real_stream;
6cc0546c058f3e6253c6f99727b28dd602712974Timo Sirainen if (unlikely((ret = _stream->flush(_stream)) < 0)) {
6cc0546c058f3e6253c6f99727b28dd602712974Timo Sirainen stream->last_failed_errno = stream->stream_errno;
6ef7e31619edfaa17ed044b45861d106a86191efTimo Sirainenvoid o_stream_set_flush_pending(struct ostream *stream, bool set)
252db51b6c0a605163326b3ea5d09e9936ca3b29Timo Sirainen struct ostream_private *_stream = stream->real_stream;
68a4946b12583b88fa802e52ebee45cd96056772Timo Sirainensize_t o_stream_get_buffer_used_size(const struct ostream *stream)
68a4946b12583b88fa802e52ebee45cd96056772Timo Sirainen const struct ostream_private *_stream = stream->real_stream;
c0435c854a0e7246373b9752d163095cc4fbe985Timo Sirainenint o_stream_seek(struct ostream *stream, uoff_t offset)
252db51b6c0a605163326b3ea5d09e9936ca3b29Timo Sirainen struct ostream_private *_stream = stream->real_stream;
6cc0546c058f3e6253c6f99727b28dd602712974Timo Sirainen if (unlikely(_stream->seek(_stream, offset) < 0)) {
6cc0546c058f3e6253c6f99727b28dd602712974Timo Sirainen stream->last_failed_errno = stream->stream_errno;
b92e979748a22925b0770d3004eaab043ed69574Timo Sirainenssize_t o_stream_send(struct ostream *stream, const void *data, size_t size)
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainenssize_t o_stream_sendv(struct ostream *stream, const struct const_iovec *iov,
252db51b6c0a605163326b3ea5d09e9936ca3b29Timo Sirainen struct ostream_private *_stream = stream->real_stream;
0ce5f96804e81cb0f857e7df32c0272f1eed9377Timo Sirainen unsigned int i;
0ce5f96804e81cb0f857e7df32c0272f1eed9377Timo Sirainen for (i = 0, total_size = 0; i < iov_count; i++)
0ce5f96804e81cb0f857e7df32c0272f1eed9377Timo Sirainen ret = _stream->sendv(_stream, iov, iov_count);
6cc0546c058f3e6253c6f99727b28dd602712974Timo Sirainen stream->last_failed_errno = stream->stream_errno;
b92e979748a22925b0770d3004eaab043ed69574Timo Sirainenssize_t o_stream_send_str(struct ostream *stream, const char *str)
555ebb032f9b8f0cdb66f27ce7374734833e7cacTimo Sirainen return o_stream_send(stream, str, strlen(str));
c0435c854a0e7246373b9752d163095cc4fbe985Timo Sirainenoff_t o_stream_send_istream(struct ostream *outstream,
252db51b6c0a605163326b3ea5d09e9936ca3b29Timo Sirainen struct ostream_private *_outstream = outstream->real_stream;
c9bf63e9094761767a63ac6b189bcf60bcffdc44Timo Sirainen if (unlikely(outstream->closed || instream->closed))
989cafb9d84d8c98d6441fc1ab45b4c37762a98aTimo Sirainen ret = _outstream->send_istream(_outstream, instream);
8cdb3234fe3c77e477c7a0e6934678f58fc54d4dTimo Sirainenint o_stream_pwrite(struct ostream *stream, const void *data, size_t size,
8cdb3234fe3c77e477c7a0e6934678f58fc54d4dTimo Sirainen ret = stream->real_stream->write_at(stream->real_stream,
8cdb3234fe3c77e477c7a0e6934678f58fc54d4dTimo Sirainen stream->last_failed_errno = stream->stream_errno;