roo_transport
API Documentation for roo_transport
Loading...
Searching...
No Matches
link_output_stream.h
Go to the documentation of this file.
1#pragma once
2
4#ifdef ROO_USE_THREADS
5
6#include "roo_io/core/input_stream.h"
8
9namespace roo_transport {
10
11class LinkOutputStream : public roo_io::OutputStream {
12 public:
13 LinkOutputStream()
14 : channel_(nullptr), my_stream_id_(0), status_(roo_io::kClosed) {}
15
16 LinkOutputStream(Channel& channel, uint32_t my_stream_id)
17 : channel_(&channel), my_stream_id_(my_stream_id), status_(roo_io::kOk) {}
18
19 LinkOutputStream(const LinkOutputStream&) = delete;
20 LinkOutputStream& operator=(const LinkOutputStream&) = delete;
21
22 LinkOutputStream(LinkOutputStream&& other);
23 LinkOutputStream& operator=(LinkOutputStream&& other);
24
25 size_t write(const roo::byte* buf, size_t count) override;
26
27 size_t tryWrite(const roo::byte* buf, size_t count) override;
28
29 size_t availableForWrite();
30
31 void flush() override;
32
33 void close() override;
34
35 roo_io::Status status() const override { return status_; }
36
37 private:
38 Channel* channel_;
39 uint32_t my_stream_id_;
40 roo_io::Status status_;
41};
42
43} // namespace roo_transport
44
45#endif // ROO_USE_THREADS