Class ReceiveEndpoint

Class Documentation

class ReceiveEndpoint

Represents an endpoint with receive capabilities.

Provides functionality to receive data over the network. It posts a number of receive buffers to libfabric. The event queue and completion queue callbacks are set through the base class. They call the on_active_endpoint_cm_event of the ConnectionManager and the on_recv_cq_event of the CqReactor.

Public Functions

ReceiveEndpoint(ActiveEndpoint &endpoint, ConnectionParametersRecv conn_params, std::optional<SharedReceiveContextManager> &shared_context_manager, DomainManager &domain_manager, BaseEventLoop *event_loop)

Constructs a ReceiveEndpoint object.

The constructor takes a reference to an ActiveEndpoint object and allocates and posts receive buffers according to the connection parameters. If a buffer manager is provided, use that instead.

Throws:
  • FailedOpenActiveEndpoint – in case of a libfabric error

  • std::logic_error – if no buffers are provided

Parameters:
  • endpoint – The endpoint object

  • conn_params – The connection parameters for receiving data

  • domain_manager – The domain manager

  • shared_context_manager – An optional shared receive context manager to use for shared buffers

  • event_loop – The event loop

inline auto operator<=>(const ReceiveEndpoint &other) const
inline const ActiveEndpoint &get_active_endpoint() const

Get the active endpoint object.

Returns:

A const reference for const objects, non const for non const objects

inline ActiveEndpoint &get_active_endpoint()
inline void post_buffer(Buffer *buf)

Posts a buffer for receiving data.

Is called after a received data have been processed and the buffer is ready to be used again.

Parameters:

buf – A pointer to the buffer to be posted