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

Abstract base class for E3AP transport connectors. More...

#include <e3_connector.hpp>

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

Public Member Functions

virtual ~E3Connector ()=default
 E3Connector (const E3Connector &)=delete
E3Connector & operator= (const E3Connector &)=delete
 E3Connector (E3Connector &&)=default
E3Connector & operator= (E3Connector &&)=default
virtual ErrorCode setup_initial_connection ()=0
 Set up the initial connection (setup channel).
virtual int recv_setup_request (std::vector< uint8_t > &buffer)=0
 Receive a setup request.
virtual ErrorCode send_response (const std::vector< uint8_t > &data)=0
 Send a setup response.
virtual ErrorCode setup_inbound_connection ()=0
 Set up the inbound connection (SUB channel).
virtual int receive (std::vector< uint8_t > &buffer)=0
 Receive data from the inbound channel.
virtual ErrorCode setup_outbound_connection ()=0
 Set up the outbound connection (PUB channel).
virtual ErrorCode send (const std::vector< uint8_t > &data)=0
 Send data on the outbound channel.
virtual ErrorCode setup_initial_connection_client ()
 Connect the setup channel (dApp role: REQ connect).
virtual ErrorCode send_setup_request_client (const std::vector< uint8_t > &)
 Send a SetupRequest on the setup channel (dApp role).
virtual int recv_setup_response_client (std::vector< uint8_t > &)
 Receive a SetupResponse on the setup channel (dApp role).
virtual ErrorCode setup_inbound_connection_client ()
 Connect the inbound channel (dApp role: SUB connect to the RAN's publisher endpoint).
virtual ErrorCode setup_outbound_connection_client ()
 Connect the outbound channel (dApp role: PUB connect to the RAN's subscriber endpoint).
virtual void dispose ()=0
 Clean up and release all resources.
virtual void shutdown ()
 Interrupt blocking operations for shutdown.
virtual E3LinkLayer link_layer () const noexcept=0
 Get the link layer type.
virtual E3TransportLayer transport_layer () const noexcept=0
 Get the transport layer type.
virtual bool is_connected () const noexcept=0
 Check if connector is connected.
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.

Protected Member Functions

 E3Connector ()=default

Protected Attributes

std::string setup_endpoint_
std::string inbound_endpoint_
std::string outbound_endpoint_
E3Role role_ {E3Role::RAN}

Detailed Description

Abstract base class for E3AP transport connectors.

This class defines the transport-agnostic interface that all connectors must implement. The design mirrors the original C implementation's function pointer approach, but uses virtual methods for type safety.

Derived classes:

Definition at line 33 of file e3_connector.hpp.

Constructor & Destructor Documentation

◆ ~E3Connector()

virtual libe3::E3Connector::~E3Connector ( )
virtualdefault

◆ E3Connector() [1/3]

libe3::E3Connector::E3Connector ( const E3Connector & )
delete

◆ E3Connector() [2/3]

libe3::E3Connector::E3Connector ( E3Connector && )
default

◆ E3Connector() [3/3]

libe3::E3Connector::E3Connector ( )
protecteddefault

Member Function Documentation

◆ dispose()

virtual void libe3::E3Connector::dispose ( )
pure virtual

Clean up and release all resources.

Implemented in libe3::PosixE3Connector, and libe3::ZmqE3Connector.

◆ inbound_endpoint()

const std::string & libe3::E3Connector::inbound_endpoint ( ) const
inlinenoexcept

Get inbound endpoint.

Definition at line 191 of file e3_connector.hpp.

◆ is_connected()

virtual bool libe3::E3Connector::is_connected ( ) const
pure virtualnoexcept

Check if connector is connected.

Implemented in libe3::PosixE3Connector, and libe3::ZmqE3Connector.

◆ link_layer()

virtual E3LinkLayer libe3::E3Connector::link_layer ( ) const
pure virtualnoexcept

Get the link layer type.

Implemented in libe3::PosixE3Connector, and libe3::ZmqE3Connector.

◆ operator=() [1/2]

E3Connector & libe3::E3Connector::operator= ( const E3Connector & )
delete

◆ operator=() [2/2]

E3Connector & libe3::E3Connector::operator= ( E3Connector && )
default

◆ outbound_endpoint()

const std::string & libe3::E3Connector::outbound_endpoint ( ) const
inlinenoexcept

Get outbound endpoint.

Definition at line 196 of file e3_connector.hpp.

◆ receive()

virtual int libe3::E3Connector::receive ( std::vector< uint8_t > & buffer)
pure virtual

Receive data from the inbound channel.

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

Implemented in libe3::PosixE3Connector, and libe3::ZmqE3Connector.

◆ recv_setup_request()

virtual int libe3::E3Connector::recv_setup_request ( std::vector< uint8_t > & buffer)
pure virtual

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

Implemented in libe3::PosixE3Connector, and libe3::ZmqE3Connector.

◆ recv_setup_response_client()

virtual int libe3::E3Connector::recv_setup_response_client ( std::vector< uint8_t > & )
inlinevirtual

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

Reimplemented in libe3::PosixE3Connector, and libe3::ZmqE3Connector.

Definition at line 124 of file e3_connector.hpp.

◆ role()

E3Role libe3::E3Connector::role ( ) const
inlinenoexcept

Get current role.

Definition at line 181 of file e3_connector.hpp.

◆ send()

virtual ErrorCode libe3::E3Connector::send ( const std::vector< uint8_t > & data)
pure virtual

Send data on the outbound channel.

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

Implemented in libe3::PosixE3Connector, and libe3::ZmqE3Connector.

◆ send_response()

virtual ErrorCode libe3::E3Connector::send_response ( const std::vector< uint8_t > & data)
pure virtual

Send a setup response.

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

Implemented in libe3::PosixE3Connector, and libe3::ZmqE3Connector.

◆ send_setup_request_client()

virtual ErrorCode libe3::E3Connector::send_setup_request_client ( const std::vector< uint8_t > & )
inlinevirtual

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

Reimplemented in libe3::PosixE3Connector, and libe3::ZmqE3Connector.

Definition at line 117 of file e3_connector.hpp.

◆ set_role()

void libe3::E3Connector::set_role ( E3Role role)
inlinenoexcept

Set role (RAN or DAPP). Affects bind vs connect direction and cleanup behaviour. Must be set before any setup_* call. Default RAN.

Definition at line 176 of file e3_connector.hpp.

◆ setup_endpoint()

const std::string & libe3::E3Connector::setup_endpoint ( ) const
inlinenoexcept

Get setup endpoint.

Definition at line 186 of file e3_connector.hpp.

◆ setup_inbound_connection()

virtual ErrorCode libe3::E3Connector::setup_inbound_connection ( )
pure virtual

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

Implemented in libe3::PosixE3Connector, and libe3::ZmqE3Connector.

◆ setup_inbound_connection_client()

virtual ErrorCode libe3::E3Connector::setup_inbound_connection_client ( )
inlinevirtual

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

Reimplemented in libe3::PosixE3Connector, and libe3::ZmqE3Connector.

Definition at line 132 of file e3_connector.hpp.

◆ setup_initial_connection()

virtual ErrorCode libe3::E3Connector::setup_initial_connection ( )
pure virtual

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

Implemented in libe3::PosixE3Connector, and libe3::ZmqE3Connector.

◆ setup_initial_connection_client()

virtual ErrorCode libe3::E3Connector::setup_initial_connection_client ( )
inlinevirtual

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

Reimplemented in libe3::PosixE3Connector, and libe3::ZmqE3Connector.

Definition at line 110 of file e3_connector.hpp.

◆ setup_outbound_connection()

virtual ErrorCode libe3::E3Connector::setup_outbound_connection ( )
pure virtual

Set up the outbound connection (PUB channel).

This establishes the channel for sending indications to dApps.

Returns
ErrorCode::SUCCESS on success, error code otherwise

Implemented in libe3::PosixE3Connector, and libe3::ZmqE3Connector.

◆ setup_outbound_connection_client()

virtual ErrorCode libe3::E3Connector::setup_outbound_connection_client ( )
inlinevirtual

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

Reimplemented in libe3::PosixE3Connector, and libe3::ZmqE3Connector.

Definition at line 140 of file e3_connector.hpp.

◆ shutdown()

virtual void libe3::E3Connector::shutdown ( )
inlinevirtual

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 in libe3::PosixE3Connector, and libe3::ZmqE3Connector.

Definition at line 155 of file e3_connector.hpp.

◆ transport_layer()

virtual E3TransportLayer libe3::E3Connector::transport_layer ( ) const
pure virtualnoexcept

Get the transport layer type.

Implemented in libe3::PosixE3Connector, and libe3::ZmqE3Connector.

Member Data Documentation

◆ inbound_endpoint_

std::string libe3::E3Connector::inbound_endpoint_
protected

Definition at line 202 of file e3_connector.hpp.

◆ outbound_endpoint_

std::string libe3::E3Connector::outbound_endpoint_
protected

Definition at line 203 of file e3_connector.hpp.

◆ role_

E3Role libe3::E3Connector::role_ {E3Role::RAN}
protected

Definition at line 204 of file e3_connector.hpp.

◆ setup_endpoint_

std::string libe3::E3Connector::setup_endpoint_
protected

Definition at line 201 of file e3_connector.hpp.


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