libe3 0.2.5
C++ library for E3AP RAN vendor integration
Loading...
Searching...
No Matches
libe3::ZmqE3Connector Class Reference

ZeroMQ-based E3 connector. More...

#include <zmq_connector.hpp>

Inheritance diagram for libe3::ZmqE3Connector:
libe3::E3Connector

Public Member Functions

 ZmqE3Connector (E3TransportLayer transport_layer, const std::string &setup_endpoint, const std::string &inbound_endpoint, const std::string &outbound_endpoint, uint16_t setup_port, uint16_t inbound_port, uint16_t outbound_port, size_t io_threads)
 ~ZmqE3Connector () override
ErrorCode setup_initial_connection () override
 Set up the initial connection (setup channel).
int recv_setup_request (std::vector< uint8_t > &buffer) override
 Receive a setup request.
ErrorCode send_response (const std::vector< uint8_t > &data) override
 Send a setup response.
ErrorCode setup_inbound_connection () override
 Set up the inbound connection (SUB channel).
int receive (std::vector< uint8_t > &buffer) override
 Receive data from the inbound channel.
ErrorCode setup_outbound_connection () override
 Set up the outbound connection (PUB channel).
ErrorCode send (const std::vector< uint8_t > &data) override
 Send data on the outbound channel.
ErrorCode setup_initial_connection_client () override
 Connect the setup channel (dApp role: REQ connect).
ErrorCode send_setup_request_client (const std::vector< uint8_t > &data) override
 Send a SetupRequest on the setup channel (dApp role).
int recv_setup_response_client (std::vector< uint8_t > &buffer) override
 Receive a SetupResponse on the setup channel (dApp role).
ErrorCode setup_inbound_connection_client () override
 Connect the inbound channel (dApp role: SUB connect to the RAN's publisher endpoint).
ErrorCode setup_outbound_connection_client () override
 Connect the outbound channel (dApp role: PUB connect to the RAN's subscriber endpoint).
void dispose () override
 Clean up and release all resources.
void shutdown () override
 Interrupt blocking operations for shutdown.
E3LinkLayer link_layer () const noexcept override
 Get the link layer type.
E3TransportLayer transport_layer () const noexcept override
 Get the transport layer type.
bool is_connected () const noexcept override
 Check if connector is connected.
Public Member Functions inherited from libe3::E3Connector
virtual ~E3Connector ()=default
 E3Connector (const E3Connector &)=delete
E3Connector & operator= (const E3Connector &)=delete
 E3Connector (E3Connector &&)=default
E3Connector & operator= (E3Connector &&)=default
void set_role (E3Role role) noexcept
 Set role (RAN or DAPP). Affects bind vs connect direction and cleanup behaviour. Must be set before any setup_* call. Default RAN.
E3Role role () const noexcept
 Get current role.
const std::string & setup_endpoint () const noexcept
 Get setup endpoint.
const std::string & inbound_endpoint () const noexcept
 Get inbound endpoint.
const std::string & outbound_endpoint () const noexcept
 Get outbound endpoint.

Additional Inherited Members

Protected Member Functions inherited from libe3::E3Connector
 E3Connector ()=default
Protected Attributes inherited from libe3::E3Connector
std::string setup_endpoint_
std::string inbound_endpoint_
std::string outbound_endpoint_
E3Role role_ {E3Role::RAN}

Detailed Description

ZeroMQ-based E3 connector.

Provides transport using ZeroMQ sockets. Supports TCP and IPC transports. Ported from the original C implementation's zeromq_* functions.

Definition at line 24 of file zmq_connector.hpp.

Constructor & Destructor Documentation

◆ ZmqE3Connector()

libe3::ZmqE3Connector::ZmqE3Connector ( E3TransportLayer transport_layer,
const std::string & setup_endpoint,
const std::string & inbound_endpoint,
const std::string & outbound_endpoint,
uint16_t setup_port,
uint16_t inbound_port,
uint16_t outbound_port,
size_t io_threads )

Definition at line 42 of file zmq_connector.cpp.

◆ ~ZmqE3Connector()

libe3::ZmqE3Connector::~ZmqE3Connector ( )
override

Definition at line 78 of file zmq_connector.cpp.

Member Function Documentation

◆ dispose()

void libe3::ZmqE3Connector::dispose ( )
overridevirtual

Clean up and release all resources.

Implements libe3::E3Connector.

Definition at line 436 of file zmq_connector.cpp.

◆ is_connected()

bool libe3::ZmqE3Connector::is_connected ( ) const
inlineoverridevirtualnoexcept

Check if connector is connected.

Implements libe3::E3Connector.

Definition at line 65 of file zmq_connector.hpp.

◆ link_layer()

E3LinkLayer libe3::ZmqE3Connector::link_layer ( ) const
inlineoverridevirtualnoexcept

Get the link layer type.

Implements libe3::E3Connector.

Definition at line 57 of file zmq_connector.hpp.

◆ receive()

int libe3::ZmqE3Connector::receive ( std::vector< uint8_t > & buffer)
overridevirtual

Receive data from the inbound channel.

Parameters
bufferBuffer to store received data
Returns
Number of bytes received, or negative error code

Implements libe3::E3Connector.

Definition at line 229 of file zmq_connector.cpp.

◆ recv_setup_request()

int libe3::ZmqE3Connector::recv_setup_request ( std::vector< uint8_t > & buffer)
overridevirtual

Receive a setup request.

Blocks until a setup request is received on the setup channel.

Parameters
bufferBuffer to store received data
Returns
Number of bytes received, or negative error code

Implements libe3::E3Connector.

Definition at line 155 of file zmq_connector.cpp.

◆ recv_setup_response_client()

int libe3::ZmqE3Connector::recv_setup_response_client ( std::vector< uint8_t > & )
overridevirtual

Receive a SetupResponse on the setup channel (dApp role).

Reimplemented from libe3::E3Connector.

Definition at line 366 of file zmq_connector.cpp.

◆ send()

ErrorCode libe3::ZmqE3Connector::send ( const std::vector< uint8_t > & data)
overridevirtual

Send data on the outbound channel.

Parameters
dataData to send
Returns
ErrorCode::SUCCESS on success, error code otherwise

Implements libe3::E3Connector.

Definition at line 276 of file zmq_connector.cpp.

◆ send_response()

ErrorCode libe3::ZmqE3Connector::send_response ( const std::vector< uint8_t > & data)
overridevirtual

Send a setup response.

Parameters
dataResponse data to send
Returns
ErrorCode::SUCCESS on success, error code otherwise

Implements libe3::E3Connector.

Definition at line 177 of file zmq_connector.cpp.

◆ send_setup_request_client()

ErrorCode libe3::ZmqE3Connector::send_setup_request_client ( const std::vector< uint8_t > & )
overridevirtual

Send a SetupRequest on the setup channel (dApp role).

Reimplemented from libe3::E3Connector.

Definition at line 355 of file zmq_connector.cpp.

◆ setup_inbound_connection()

ErrorCode libe3::ZmqE3Connector::setup_inbound_connection ( )
overridevirtual

Set up the inbound connection (SUB channel).

This establishes the channel for receiving control actions from dApps.

Returns
ErrorCode::SUCCESS on success, error code otherwise

Implements libe3::E3Connector.

Definition at line 193 of file zmq_connector.cpp.

◆ setup_inbound_connection_client()

ErrorCode libe3::ZmqE3Connector::setup_inbound_connection_client ( )
overridevirtual

Connect the inbound channel (dApp role: SUB connect to the RAN's publisher endpoint).

Reimplemented from libe3::E3Connector.

Definition at line 380 of file zmq_connector.cpp.

◆ setup_initial_connection()

ErrorCode libe3::ZmqE3Connector::setup_initial_connection ( )
overridevirtual

Set up the initial connection (setup channel).

This establishes the REQ/REP channel used for E3 Setup procedures.

Returns
ErrorCode::SUCCESS on success, error code otherwise

Implements libe3::E3Connector.

Definition at line 82 of file zmq_connector.cpp.

◆ setup_initial_connection_client()

ErrorCode libe3::ZmqE3Connector::setup_initial_connection_client ( )
overridevirtual

Connect the setup channel (dApp role: REQ connect).

Reimplemented from libe3::E3Connector.

Definition at line 319 of file zmq_connector.cpp.

◆ setup_outbound_connection()

ErrorCode libe3::ZmqE3Connector::setup_outbound_connection ( )
overridevirtual

Set up the outbound connection (PUB channel).

This establishes the channel for sending indications to dApps.

Returns
ErrorCode::SUCCESS on success, error code otherwise

Implements libe3::E3Connector.

Definition at line 250 of file zmq_connector.cpp.

◆ setup_outbound_connection_client()

ErrorCode libe3::ZmqE3Connector::setup_outbound_connection_client ( )
overridevirtual

Connect the outbound channel (dApp role: PUB connect to the RAN's subscriber endpoint).

Reimplemented from libe3::E3Connector.

Definition at line 407 of file zmq_connector.cpp.

◆ shutdown()

void libe3::ZmqE3Connector::shutdown ( )
overridevirtual

Interrupt blocking operations for shutdown.

Called before joining threads to unblock any blocking socket operations. Default implementation does nothing (for connectors that use timeouts).

Reimplemented from libe3::E3Connector.

Definition at line 493 of file zmq_connector.cpp.

◆ transport_layer()

E3TransportLayer libe3::ZmqE3Connector::transport_layer ( ) const
inlineoverridevirtualnoexcept

Get the transport layer type.

Implements libe3::E3Connector.

Definition at line 61 of file zmq_connector.hpp.


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