+void add_to_flush_poller(output_stream<char>& x) noexcept;
+
+template <typename CharType>
+future<> output_stream<CharType>::do_flush() noexcept {
+ if (_end) {
+ _buf.trim(_end);
+ _end = 0;
+ return _fd.put(std::move(_buf)).then([this] {
+ return _fd.flush();
+ });
+ } else if (_zc_bufs) {
+ return _fd.put(std::move(_zc_bufs)).then([this] {
+ return _fd.flush();
+ });
+ } else {
+ return make_ready_future<>();
+ }
+}
+