22#ifndef LIBE3_DAPP_SUBSCRIPTION_STATE_HPP
23#define LIBE3_DAPP_SUBSCRIPTION_STATE_HPP
30#include <unordered_map>
47 std::vector<RanFunctionDef> functions) {
48 std::lock_guard<std::mutex> lock(mu_);
58 std::lock_guard<std::mutex> lock(mu_);
68 std::lock_guard<std::mutex> lock(mu_);
73 const uint32_t sub_id = it->second;
84 std::lock_guard<std::mutex> lock(mu_);
89 const uint32_t rf_id = it->second;
99 std::lock_guard<std::mutex> lock(mu_);
100 std::vector<uint32_t> out;
104 out.push_back(sub_id);
113 std::lock_guard<std::mutex> lock(mu_);
114 std::vector<uint32_t> out;
118 out.push_back(rf_id);
127 std::lock_guard<std::mutex> lock(mu_);
140 mutable std::mutex
mu;
158 std::mutex& mu_ =
mu;
std::vector< RanFunctionDef > remote_ran_functions
RAN functions advertised by the RAN in SetupResponse.
std::optional< uint32_t > assigned_dapp_id
Assigned by the RAN in SetupResponse. nullopt until setup completes.
DAppSubscriptionState & operator=(const DAppSubscriptionState &)=delete
std::unordered_map< uint32_t, uint32_t > ran_function_to_subscription_id
rf_id -> sub_id
std::optional< uint32_t > subscription_id_for(uint32_t ran_function_id) const
Look up subscription ID for a RAN function.
DAppSubscriptionState()=default
std::vector< uint32_t > subscribed_ran_functions() const
Snapshot of RAN function IDs this dApp is currently subscribed to.
void record_setup_response(uint32_t dapp_id, std::vector< RanFunctionDef > functions)
Store the assignment from a SetupResponse. Called once after a positive SetupResponse arrives.
std::unordered_map< uint32_t, uint32_t > subscription_id_to_ran_function
sub_id -> rf_id (reverse, used for SubscriptionDelete)
bool remove_subscription_by_id(uint32_t subscription_id)
Remove the subscription with a given subscription ID.
bool remove_subscription_by_rf(uint32_t ran_function_id)
Remove the subscription for a given RAN function.
std::vector< uint32_t > active_subscriptions() const
Snapshot of active subscription IDs.
void record_subscription(uint32_t ran_function_id, uint32_t subscription_id)
Record a successful SubscriptionResponse. Idempotent: re-recording the same (rf_id,...
DAppSubscriptionState(const DAppSubscriptionState &)=delete
E3AP Protocol Types - Vendor-neutral type definitions.