roo_transport
API Documentation for roo_transport
Loading...
Searching...
No Matches
packet_sender_over_stream.h
Go to the documentation of this file.
1#pragma once
2
3#include <memory>
4
5#include "roo_backport.h"
6#include "roo_backport/byte.h"
7#include "roo_io/core/output_stream.h"
9
10namespace roo_transport {
11
12/// Sends packets via a potentially unreliable stream (for example UART/Serial)
13/// while adding transport framing/integrity metadata.
14///
15/// Uses 32-bit hashes for integrity and COBS framing so the receiver can
16/// recover packet boundaries under loss/corruption.
18 public:
19 /// Maximum payload size of one packet.
20 constexpr static size_t kMaxPacketSize = 250u;
21
22 /// Creates sender writing framed transport packets to `out`.
23 ///
24 /// Stream may be unreliable (drop/corrupt/reorder bytes).
25 PacketSenderOverStream(roo_io::OutputStream& out);
26
27 /// Sends one packet payload.
28 void send(const roo::byte* buf, size_t len) override;
29
30 void flush() override { out_.flush(); }
31
32 private:
33 roo_io::OutputStream& out_;
34 /// Work buffer allocated in constructor.
35 std::unique_ptr<roo::byte[]> buf_;
36};
37
38} // namespace roo_transport
Sends packets via a potentially unreliable stream (for example UART/Serial) while adding transport fr...
void send(const roo::byte *buf, size_t len) override
Sends one packet payload.
static constexpr size_t kMaxPacketSize
Maximum payload size of one packet.
void flush() override
Flushes pending output.
Abstraction for sending packets over an underlying medium.