Flushing a filtering_ostreambuf
I have implemented a stream that sends output to the debugger (using OutputDebugString() in Windows):
class debug_output_sink : public boost::iostreams::sink {
public:
debug_output_sink(int) { }
std::streamsize write(const char* s, std::streamsize n);
// also tried with:
// struct category : boost::iostreams::sink::category, boost::iostreams::flushable_tag { };
// bool flush() { return true; }
};
When I use it directly, flush() works fine:
stream_buffer
jean-louis.a.leroy@fortis.com wrote:
However, when I put it in a filter, flushing the filter doesn't flush the stream:
// scope { stream_buffer
debug_streambuf(debug_sink); ostream debug_stream(&debug_streambuf); filtering_ostreambuf filtering_buf; filtering_buf.push(debug_stream);
ostream os(&filtering_buf); os << "test"; os.flush(); // nothing filtering_buf.pubsync(); // nothing either filtering_buf.strict_sync(); // still nothing } // characters appear at last !
What I am missing here?
You may wish to read the thread at: http://thread.gmane.org/gmane.comp.lib.boost.user/33355 In particular, read the posts by Jonathan Turkanis. It may (or may not?) shed some additional light on flush.
participants (2)
-
eg
-
jean-louis.a.leroy@fortis.com