1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
6 #include <seastar/core/reactor.hh>
7 #include <seastar/core/fstream.hh>
8 #include <seastar/core/do_with.hh>
10 #include "include/buffer.h"
12 namespace ceph::buffer
{
14 seastar::future
<> write_file(ceph::buffer::list
&& bl
,
16 seastar::file_permissions permissions
)
18 const auto flags
= (seastar::open_flags::wo
|
19 seastar::open_flags::create
|
20 seastar::open_flags::truncate
);
21 seastar::file_open_options foo
;
22 foo
.create_permissions
= permissions
;
23 return seastar::open_file_dma(fn
, flags
, foo
).then(
24 [bl
=std::move(bl
)](seastar::file f
) {
25 return seastar::do_with(seastar::make_file_output_stream(f
),
28 [](seastar::output_stream
<char>& out
,
30 ceph::buffer::list
& bl
) {
31 return seastar::do_for_each(bl
.buffers(), [&out
](auto& buf
) {
32 return out
.write(buf
.c_str(), buf
.length());