8#include "roo_backport.h"
9#include "roo_backport/byte.h"
37 virtual bool send(
const roo::byte* header,
size_t header_size,
38 const roo::byte* payload,
size_t payload_size,
46 const roo::byte* header,
size_t header_size,
47 const roo::byte* payload,
48 size_t payload_size) = 0;
51 virtual bool send(
const roo::byte* payload,
size_t payload_size,
53 return send(
nullptr, 0, payload, payload_size, connection_id);
57 bool send(
const roo::byte* payload,
size_t payload_size) {
58 return send(payload, payload_size,
nullptr);
63 const roo::byte* payload,
size_t payload_size) {
100 const roo::byte* data,
size_t len)>;
103 size_t len)
override {
104 fn_(connection_id, data, len);
virtual ~Receiver()=default
virtual void received(ConnectionId connection_id, const roo::byte *data, size_t len)=0
Called when message is received.
virtual void reset(ConnectionId connection_id)
Notifies that underlying connection was closed/reset.
void received(ConnectionId connection_id, const roo::byte *data, size_t len) override
Called when message is received.
std::function< void(ConnectionId connection_id, const roo::byte *data, size_t len)> Fn
Abstract interface for message exchange over a reliable channel.
virtual bool sendContinuation(ConnectionId connection_id, const roo::byte *header, size_t header_size, const roo::byte *payload, size_t payload_size)=0
Sends continuation payload on an existing sender-side connection.
virtual bool send(const roo::byte *payload, size_t payload_size, ConnectionId *connection_id)
Convenience overload for header-less messages.
void unsetReceiver()
Unregisters receiver.
virtual bool send(const roo::byte *header, size_t header_size, const roo::byte *payload, size_t payload_size, ConnectionId *connection_id)=0
Sends message with optional header and payload.
virtual bool sendContinuation(ConnectionId connection_id, const roo::byte *payload, size_t payload_size)
Convenience overload for header-less continuation messages.
void received(ConnectionId connection_id, const roo::byte *data, size_t len)
Dispatches received message to registered receiver.
bool send(const roo::byte *payload, size_t payload_size)
Convenience overload for header-less stateless messages.
void setReceiver(Receiver &receiver)
Registers message receiver. Call before channel initialization.
virtual ~Messaging()=default
void reset(ConnectionId connection_id)
Dispatches reset notification to registered receiver.