roo_io
API Documentation for roo_io
Loading...
Searching...
No Matches
file_output_stream.cpp
Go to the documentation of this file.
2
3#ifdef ARDUINO
4
5namespace roo_io {
6
7ArduinoFileOutputStream::ArduinoFileOutputStream(Status error)
8 : file_(), status_(error) {}
9
10ArduinoFileOutputStream::ArduinoFileOutputStream(fs::File file)
11 : ArduinoFileOutputStream(nullptr, std::move(file)) {}
12
13ArduinoFileOutputStream::ArduinoFileOutputStream(
14 std::shared_ptr<MountImpl> mount, fs::File file)
15 : mount_(std::move(mount)),
16 file_(std::move(file)),
17 status_(file_ ? kOk : kClosed) {}
18
19size_t ArduinoFileOutputStream::write(const byte* buf, size_t count) {
20 if (status_ != kOk) return 0;
21 size_t result = file_.write((const uint8_t*)buf, count);
22 if (result < count) {
23 status_ = roo_io::kWriteError;
24 mount_.reset();
25 }
26 return result;
27}
28
29void ArduinoFileOutputStream::flush() {
30 if (status_ == kClosed) return;
31 file_.flush();
32 if (!file_) {
33 status_ = kWriteError;
34 mount_.reset();
35 }
36}
37
38void ArduinoFileOutputStream::close() {
39 mount_.reset();
40 if (status_ == kClosed) return;
41 file_.close();
42 if (status_ == kOk) {
43 status_ = kClosed;
44 }
45}
46
47} // namespace roo_io
48
49#endif // ARDUINO
Definition byte.h:6
roo::basic_string_view< CharT, Traits > basic_string_view
Definition string_view.h:8
Status
Definition status.h:7
@ kOk
Definition status.h:8
@ kClosed
Definition status.h:10
@ kWriteError
Definition status.h:15