roo_transport
API Documentation for roo_transport
Loading...
Searching...
No Matches
packet_receiver.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/input_stream.h"
8
9namespace roo_transport {
10
11/// Abstraction for receiving packets produced by `PacketSender`.
12///
13/// Data arrives in packets up to 250 bytes. Corrupted packets are dropped;
14/// packet loss is possible.
16 public:
17 /// Callback invoked for each received packet.
18 using ReceiverFn = std::function<void(const roo::byte*, size_t)>;
19
20 /// Receives currently available packets without indefinite blocking.
21 ///
22 /// @return Number of packets delivered.
23 virtual size_t tryReceive(const ReceiverFn& receiver_fn) = 0;
24
25 /// Receives packets, blocking as needed until at least one packet is
26 /// delivered, or until stream end/error.
27 ///
28 /// @return Number of delivered packets, or zero on error/end-of-stream.
29 virtual size_t receive(const ReceiverFn& receiver_fn) = 0;
30};
31
32} // namespace roo_transport
Abstraction for receiving packets produced by PacketSender.
std::function< void(const roo::byte *, size_t)> ReceiverFn
Callback invoked for each received packet.
virtual size_t tryReceive(const ReceiverFn &receiver_fn)=0
Receives currently available packets without indefinite blocking.
virtual size_t receive(const ReceiverFn &receiver_fn)=0
Receives packets, blocking as needed until at least one packet is delivered, or until stream end/erro...