roo_io
API Documentation for roo_io
Loading...
Searching...
No Matches
stream_output_stream.h
Go to the documentation of this file.
1#pragma once
2
3#if (defined ARDUINO)
4
5#include <Arduino.h>
6
8
9namespace roo_io {
10
11/// Adapter exposing Arduino `Stream` as `OutputStream`.
12///
13/// Stream remains open until `close()` is called.
14class ArduinoStreamOutputStream : public OutputStream {
15 public:
16 /// Creates adapter over Arduino `Print`.
18
19 /// Non-blocking write.
20 ///
21 /// Updates status.
22 ///
23 /// @return Number of bytes written.
24 size_t tryWrite(const byte* buf, size_t count) override;
25
26 /// Potentially blocking write.
27 ///
28 /// Updates status.
29 ///
30 /// @return Number of bytes written.
31 size_t write(const byte* buf, size_t count) override;
32
33 /// Writes exactly `count` bytes unless stream becomes unavailable.
34 ///
35 /// Updates status.
36 ///
37 /// @return Number of bytes written.
38 size_t writeFully(const byte* buf, size_t count) override;
39
40 /// Flushes buffered output to sink.
41 ///
42 /// Updates status.
43 void flush() override;
44
45 /// Closes adapter by setting status to `kClosed`.
46 ///
47 /// Updates status.
48 void close() override;
49
50 /// Returns current status.
51 ///
52 /// @return Current status value.
53 Status status() const override { return status_; }
54
55 private:
56 Stream& output_;
57 mutable Status status_;
58};
59
60} // namespace roo_io
61
62#endif // (defined ARDUINO)
Definition byte.h:6
roo::basic_string_view< CharT, Traits > basic_string_view
Definition string_view.h:8
size_t count
Definition compare.h:45
Status
Definition status.h:7