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

E3 Subscription Manager. More...

#include <subscription_manager.hpp>

Public Member Functions

 SubscriptionManager ()
 Construct a new Subscription Manager.
 ~SubscriptionManager ()
 Destructor.
 SubscriptionManager (const SubscriptionManager &)=delete
SubscriptionManager & operator= (const SubscriptionManager &)=delete
 SubscriptionManager (SubscriptionManager &&)=delete
SubscriptionManager & operator= (SubscriptionManager &&)=delete
void set_sm_lifecycle_callback (SmLifecycleCallback callback)
 Set callback for SM lifecycle events.
std::pair< ErrorCode, uint32_t > register_dapp ()
 Register a dApp from E3 Setup Request.
ErrorCode unregister_dapp (uint32_t dapp_id)
 Unregister a dApp and clean up all its subscriptions.
bool is_dapp_registered (uint32_t dapp_id) const
 Check if a dApp is registered.
std::vector< uint32_t > get_registered_dapps () const
 Get list of registered dApp IDs.
std::pair< ErrorCode, uint32_t > add_subscription (uint32_t dapp_id, uint32_t ran_function_id, const std::vector< uint32_t > &telemetry_ids={}, const std::vector< uint32_t > &control_ids={}, uint32_t periodicity_us=0)
 Add a subscription between dApp and RAN function.
ErrorCode remove_subscription (uint32_t dapp_id, uint32_t ran_function_id)
 Remove a subscription between dApp and RAN function.
ErrorCode remove_subscription_by_id (uint32_t dapp_id, uint32_t subscription_id)
 Remove a subscription by its ID.
bool is_subscribed (uint32_t dapp_id, uint32_t ran_function_id) const
 Check if dApp is subscribed to a RAN function.
std::vector< uint32_t > get_dapp_subscriptions (uint32_t dapp_id) const
 Get all RAN functions a dApp is subscribed to.
std::vector< uint32_t > get_subscribed_dapps (uint32_t ran_function_id) const
 Get all dApps subscribed to a RAN function.
const SubscriptionDetails * get_subscription_details (uint32_t dapp_id, uint32_t ran_function_id) const
 Get subscription details for a specific dApp + RAN function pair.
size_t get_subscriber_count (uint32_t ran_function_id) const
 Get count of subscribers for a RAN function.
std::vector< uint32_t > get_active_ran_functions () const
 Get all RAN functions that have at least one subscriber.
bool has_subscribers (uint32_t ran_function_id) const
 Check if any dApp is subscribed to a RAN function.
size_t dapp_count () const
 Get total number of registered dApps.
size_t subscription_count () const
 Get total number of active subscriptions.
void clear ()
 Clear all registrations and subscriptions.

Detailed Description

E3 Subscription Manager.

Thread-safe manager for dApp registrations and RAN function subscriptions. Handles:

  • dApp registration from E3 Setup requests
  • Subscription management from E3 Subscription requests
  • RAN function lifecycle coordination

This class is ported from the original C e3_subscription_manager with modern C++ idioms for thread safety and memory management.

Definition at line 59 of file subscription_manager.hpp.

Constructor & Destructor Documentation

◆ SubscriptionManager() [1/3]

libe3::SubscriptionManager::SubscriptionManager ( )

Construct a new Subscription Manager.

Definition at line 32 of file subscription_manager.cpp.

◆ ~SubscriptionManager()

libe3::SubscriptionManager::~SubscriptionManager ( )

Destructor.

Definition at line 36 of file subscription_manager.cpp.

◆ SubscriptionManager() [2/3]

libe3::SubscriptionManager::SubscriptionManager ( const SubscriptionManager & )
delete

◆ SubscriptionManager() [3/3]

libe3::SubscriptionManager::SubscriptionManager ( SubscriptionManager && )
delete

Member Function Documentation

◆ add_subscription()

std::pair< ErrorCode, uint32_t > libe3::SubscriptionManager::add_subscription ( uint32_t dapp_id,
uint32_t ran_function_id,
const std::vector< uint32_t > & telemetry_ids = {},
const std::vector< uint32_t > & control_ids = {},
uint32_t periodicity_us = 0 )

Add a subscription between dApp and RAN function.

Parameters
dapp_iddApp identifier
ran_function_idRAN function identifier (0-255)
telemetry_idsTelemetry IDs the dApp wants
control_idsControl IDs the dApp wants
periodicity_usReporting periodicity in microseconds (0 = SM default)
Returns
std::pair containing:
  • ErrorCode::SUCCESS on success, or error code on failure
  • The assigned subscription ID (valid only if ErrorCode::SUCCESS)
ErrorCode::DAPP_NOT_REGISTERED if dApp not registered
ErrorCode::SUBSCRIPTION_EXISTS if already subscribed

Definition at line 154 of file subscription_manager.cpp.

◆ clear()

void libe3::SubscriptionManager::clear ( )

Clear all registrations and subscriptions.

Definition at line 406 of file subscription_manager.cpp.

◆ dapp_count()

size_t libe3::SubscriptionManager::dapp_count ( ) const

Get total number of registered dApps.

Definition at line 391 of file subscription_manager.cpp.

◆ get_active_ran_functions()

std::vector< uint32_t > libe3::SubscriptionManager::get_active_ran_functions ( ) const

Get all RAN functions that have at least one subscriber.

Definition at line 368 of file subscription_manager.cpp.

◆ get_dapp_subscriptions()

std::vector< uint32_t > libe3::SubscriptionManager::get_dapp_subscriptions ( uint32_t dapp_id) const

Get all RAN functions a dApp is subscribed to.

Definition at line 323 of file subscription_manager.cpp.

◆ get_registered_dapps()

std::vector< uint32_t > libe3::SubscriptionManager::get_registered_dapps ( ) const

Get list of registered dApp IDs.

Definition at line 140 of file subscription_manager.cpp.

◆ get_subscribed_dapps()

std::vector< uint32_t > libe3::SubscriptionManager::get_subscribed_dapps ( uint32_t ran_function_id) const

Get all dApps subscribed to a RAN function.

Definition at line 333 of file subscription_manager.cpp.

◆ get_subscriber_count()

size_t libe3::SubscriptionManager::get_subscriber_count ( uint32_t ran_function_id) const

Get count of subscribers for a RAN function.

Definition at line 354 of file subscription_manager.cpp.

◆ get_subscription_details()

const SubscriptionDetails * libe3::SubscriptionManager::get_subscription_details ( uint32_t dapp_id,
uint32_t ran_function_id ) const

Get subscription details for a specific dApp + RAN function pair.

Returns
nullptr if no such subscription exists

Definition at line 343 of file subscription_manager.cpp.

◆ has_subscribers()

bool libe3::SubscriptionManager::has_subscribers ( uint32_t ran_function_id) const

Check if any dApp is subscribed to a RAN function.

Definition at line 380 of file subscription_manager.cpp.

◆ is_dapp_registered()

bool libe3::SubscriptionManager::is_dapp_registered ( uint32_t dapp_id) const

Check if a dApp is registered.

Parameters
dapp_iddApp identifier
Returns
true if registered

Definition at line 135 of file subscription_manager.cpp.

◆ is_subscribed()

bool libe3::SubscriptionManager::is_subscribed ( uint32_t dapp_id,
uint32_t ran_function_id ) const

Check if dApp is subscribed to a RAN function.

Definition at line 313 of file subscription_manager.cpp.

◆ operator=() [1/2]

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

◆ operator=() [2/2]

SubscriptionManager & libe3::SubscriptionManager::operator= ( SubscriptionManager && )
delete

◆ register_dapp()

std::pair< ErrorCode, uint32_t > libe3::SubscriptionManager::register_dapp ( )

Register a dApp from E3 Setup Request.

The SubscriptionManager assigns a unique dApp ID automatically.

Returns
std::pair containing:
  • ErrorCode::SUCCESS on success, or error code on failure
  • The assigned dApp ID (valid only if ErrorCode::SUCCESS)
ErrorCode::INTERNAL_ERROR if no IDs available (max 101 dApps)

Definition at line 55 of file subscription_manager.cpp.

◆ remove_subscription()

ErrorCode libe3::SubscriptionManager::remove_subscription ( uint32_t dapp_id,
uint32_t ran_function_id )

Remove a subscription between dApp and RAN function.

Parameters
dapp_iddApp identifier
ran_function_idRAN function identifier
Returns
ErrorCode::SUCCESS on success
ErrorCode::SUBSCRIPTION_NOT_FOUND if subscription doesn't exist

Definition at line 222 of file subscription_manager.cpp.

◆ remove_subscription_by_id()

ErrorCode libe3::SubscriptionManager::remove_subscription_by_id ( uint32_t dapp_id,
uint32_t subscription_id )

Remove a subscription by its ID.

Parameters
dapp_iddApp identifier
subscription_idSubscription ID
Returns
ErrorCode::SUCCESS on success
ErrorCode::SUBSCRIPTION_NOT_FOUND if subscription doesn't exist

Definition at line 264 of file subscription_manager.cpp.

◆ set_sm_lifecycle_callback()

void libe3::SubscriptionManager::set_sm_lifecycle_callback ( SmLifecycleCallback callback)

Set callback for SM lifecycle events.

Definition at line 46 of file subscription_manager.cpp.

◆ subscription_count()

size_t libe3::SubscriptionManager::subscription_count ( ) const

Get total number of active subscriptions.

Definition at line 396 of file subscription_manager.cpp.

◆ unregister_dapp()

ErrorCode libe3::SubscriptionManager::unregister_dapp ( uint32_t dapp_id)

Unregister a dApp and clean up all its subscriptions.

Parameters
dapp_iddApp identifier
Returns
ErrorCode::SUCCESS on success
ErrorCode::DAPP_NOT_REGISTERED if dApp not found

Definition at line 79 of file subscription_manager.cpp.


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