roo_transport
API Documentation for roo_transport
Loading...
Searching...
No Matches
roo_transport::Messaging Class Referenceabstract

Abstract interface for message exchange over a reliable channel. More...

#include <messaging.h>

Inheritance diagram for roo_transport::Messaging:
[legend]

Data Structures

class  Receiver
 
class  SimpleReceiver
 

Public Types

using ConnectionId = uint32_t
 

Public Member Functions

virtual ~Messaging ()=default
 
void setReceiver (Receiver &receiver)
 Registers message receiver. Call before channel initialization.
 
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 *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.
 
bool send (const roo::byte *payload, size_t payload_size)
 Convenience overload for header-less stateless messages.
 
virtual bool sendContinuation (ConnectionId connection_id, const roo::byte *payload, size_t payload_size)
 Convenience overload for header-less continuation messages.
 

Protected Member Functions

 Messaging ()=default
 
void received (ConnectionId connection_id, const roo::byte *data, size_t len)
 Dispatches received message to registered receiver.
 
void reset (ConnectionId connection_id)
 Dispatches reset notification to registered receiver.
 

Detailed Description

Abstract interface for message exchange over a reliable channel.

Messages are arbitrary-length byte arrays with in-order, integrity-checked delivery. Messages may be lost across channel reset/reconnect boundaries.

Definition at line 17 of file messaging.h.

Member Typedef Documentation

◆ ConnectionId

Constructor & Destructor Documentation

◆ ~Messaging()

virtual roo_transport::Messaging::~Messaging ( )
virtualdefault

◆ Messaging()

roo_transport::Messaging::Messaging ( )
protecteddefault

Member Function Documentation

◆ received()

void roo_transport::Messaging::received ( ConnectionId  connection_id,
const roo::byte *  data,
size_t  len 
)
protected

Dispatches received message to registered receiver.

Definition at line 5 of file messaging.cpp.

References roo_transport::Messaging::Receiver::received().

◆ reset()

void roo_transport::Messaging::reset ( ConnectionId  connection_id)
protected

Dispatches reset notification to registered receiver.

Definition at line 12 of file messaging.cpp.

References roo_transport::Messaging::Receiver::reset().

◆ send() [1/3]

virtual bool roo_transport::Messaging::send ( const roo::byte *  header,
size_t  header_size,
const roo::byte *  payload,
size_t  payload_size,
ConnectionId connection_id 
)
pure virtual

Sends message with optional header and payload.

Parameters
connection_idOptional out parameter receiving sender-side connection id used for this send.
Returns
true if accepted for send.

Implemented in roo_transport::LinkMessaging, roo_transport::MuxMessaging::Channel, roo_transport::LinkMessaging, and roo_transport::MuxMessaging::Channel.

Referenced by roo_transport::MuxMessaging::Channel::send(), send(), send(), roo_transport::RpcClient::sendUnaryRpc(), and roo_transport::RpcClient::sendUnaryRpcWithTimeout().

◆ send() [2/3]

bool roo_transport::Messaging::send ( const roo::byte *  payload,
size_t  payload_size 
)
inline

Convenience overload for header-less stateless messages.

Definition at line 57 of file messaging.h.

References send().

◆ send() [3/3]

virtual bool roo_transport::Messaging::send ( const roo::byte *  payload,
size_t  payload_size,
ConnectionId connection_id 
)
inlinevirtual

Convenience overload for header-less messages.

Reimplemented in roo_transport::LinkMessaging, and roo_transport::MuxMessaging::Channel.

Definition at line 51 of file messaging.h.

References send().

◆ sendContinuation() [1/2]

virtual bool roo_transport::Messaging::sendContinuation ( ConnectionId  connection_id,
const roo::byte *  header,
size_t  header_size,
const roo::byte *  payload,
size_t  payload_size 
)
pure virtual

Sends continuation payload on an existing sender-side connection.

Intended for connection-affine responses (e.g. RPC) and atomic message streams.

Implemented in roo_transport::LinkMessaging, roo_transport::MuxMessaging::Channel, roo_transport::LinkMessaging, and roo_transport::MuxMessaging::Channel.

Referenced by roo_transport::MuxMessaging::Channel::sendContinuation(), and sendContinuation().

◆ sendContinuation() [2/2]

virtual bool roo_transport::Messaging::sendContinuation ( ConnectionId  connection_id,
const roo::byte *  payload,
size_t  payload_size 
)
inlinevirtual

Convenience overload for header-less continuation messages.

Reimplemented in roo_transport::LinkMessaging, and roo_transport::MuxMessaging::Channel.

Definition at line 62 of file messaging.h.

References sendContinuation().

◆ setReceiver()

void roo_transport::Messaging::setReceiver ( Receiver receiver)
inline

Registers message receiver. Call before channel initialization.

Definition at line 27 of file messaging.h.

Referenced by roo_transport::RpcClient::begin(), roo_transport::RpcServer::begin(), and roo_transport::MuxMessaging::MuxMessaging().

◆ unsetReceiver()

void roo_transport::Messaging::unsetReceiver ( )
inline

Unregisters receiver.

Definition at line 30 of file messaging.h.

Referenced by roo_transport::RpcClient::end(), roo_transport::RpcServer::end(), and roo_transport::RpcServer::~RpcServer().


The documentation for this class was generated from the following files: