roo_io
API Documentation for roo_io
Loading...
Searching...
No Matches
stream_input_stream.h
Go to the documentation of this file.
1#pragma once
2
3#if (defined ARDUINO)
4
5#include <Stream.h>
6
8
9namespace roo_io {
10
11/// Adapter exposing Arduino `Stream` as `InputStream`.
12///
13/// Stream remains open until `close()` is called.
14class ArduinoStreamInputStream : public InputStream {
15 public:
16 /// Creates adapter over Arduino `Stream`.
18
19 /// Non-blocking read.
20 ///
21 /// Updates status.
22 ///
23 /// @return Number of bytes read.
24 size_t tryRead(byte* buf, size_t count) override;
25
26 /// Potentially blocking read.
27 ///
28 /// Updates status.
29 ///
30 /// @return Number of bytes read.
31 size_t read(byte* buf, size_t count) override;
32
33 /// Reads exactly `count` bytes unless stream becomes unavailable.
34 ///
35 /// Updates status.
36 ///
37 /// @return Number of bytes read.
38 size_t readFully(byte* buf, size_t count) override;
39
40 /// Returns whether stream is considered open.
41 ///
42 /// @return `true` when `status()` is `kOk` or `kEndOfStream`.
43 bool isOpen() const override;
44
45 /// Closes adapter by setting status to `kClosed`.
46 ///
47 /// Updates status.
48 void close() override { status_ = kClosed; }
49
50 /// Returns current status.
51 ///
52 /// @return Current status value.
53 Status status() const override { return status_; }
54
55 private:
56 Stream& input_;
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
@ kClosed
Definition status.h:10