Skip to content
Snippets Groups Projects
Commit 59d9fc0e authored by Stefan Spettel's avatar Stefan Spettel
Browse files

refact(pcf): remove sharedptr from individual_sm_association and add nodiscard where necessary

parent d131b383
No related branches found
No related tags found
1 merge request!10Refactor of SM Policy classes
Pipeline #33290 passed
......@@ -85,17 +85,17 @@ status_code pcf_smpc::create_sm_policy_handler(
return status_code::CONTEXT_DENIED;
}
status_code res = chosen_decision->decide(context, decision);
association_id = std::to_string(m_association_id_generator.get_uid());
individual_sm_association assoc(context, *chosen_decision, association_id);
status_code res = assoc.decide_policy(decision);
if (res != status_code::CREATED) {
problem_details = fmt::format(
"SM Policy request from SUPI {}: Invalid policy decision provisioned",
context.getSupi());
} else {
association_id = std::to_string(m_association_id_generator.get_uid());
individual_sm_association assoc(context, *chosen_decision, association_id);
std::unique_lock lock_assocations(m_associations_mutex);
m_associations.insert(std::make_pair(association_id, assoc));
......
......@@ -61,7 +61,7 @@ class dnn_policy_decision : public oai::pcf::app::sm_policy::policy_decision {
* @return oai::pcf::app::sm_policy::status_code CREATED in case of
* success
*/
oai::pcf::app::sm_policy::status_code decide(
[[nodiscard]] oai::pcf::app::sm_policy::status_code decide(
const oai::pcf::model::SmPolicyContextData& context,
oai::pcf::model::SmPolicyDecision& decision) const override;
......
......@@ -32,13 +32,14 @@
using namespace oai::pcf::model;
using namespace oai::pcf::app::sm_policy;
SmPolicyContextData individual_sm_association::get_sm_policy_context_data()
const {
const SmPolicyContextData&
individual_sm_association::get_sm_policy_context_data() const {
return m_context;
}
SmPolicyDecision individual_sm_association::get_sm_policy_decision_dto() const {
return m_decision->get_sm_policy_decision();
const SmPolicyDecision& individual_sm_association::get_sm_policy_decision_dto()
const {
return m_decision.get_sm_policy_decision();
}
std::string individual_sm_association::get_id() const {
......@@ -49,6 +50,11 @@ oai::pcf::app::sm_policy::status_code
individual_sm_association::redecide_policy(
const SmPolicyUpdateContextData& update_data,
SmPolicyDecision& new_decision, std::string& problem_details) {
return m_decision->redecide(
return m_decision.redecide(
m_context, update_data, new_decision, problem_details);
}
oai::pcf::app::sm_policy::status_code individual_sm_association::decide_policy(
oai::pcf::model::SmPolicyDecision& decision) {
return m_decision.decide(m_context, decision);
}
......@@ -43,30 +43,33 @@ class individual_sm_association {
explicit individual_sm_association(
const oai::pcf::model::SmPolicyContextData& context,
const oai::pcf::app::sm_policy::policy_decision& decision,
const std::string& id) {
m_decision =
std::make_shared<oai::pcf::app::sm_policy::policy_decision>(decision);
const std::string& id)
: m_decision(decision) {
m_context = context;
m_id = id;
}
virtual ~individual_sm_association() = default;
[[nodiscard]] oai::pcf::model::SmPolicyContextData
[[nodiscard]] virtual const oai::pcf::model::SmPolicyContextData&
get_sm_policy_context_data() const;
[[nodiscard]] oai::pcf::model::SmPolicyDecision get_sm_policy_decision_dto()
const;
[[nodiscard]] oai::pcf::app::sm_policy::status_code redecide_policy(
[[nodiscard]] virtual const oai::pcf::model::SmPolicyDecision&
get_sm_policy_decision_dto() const;
[[nodiscard]] virtual oai::pcf::app::sm_policy::status_code redecide_policy(
const oai::pcf::model::SmPolicyUpdateContextData& update_data,
oai::pcf::model::SmPolicyDecision& new_decision,
std::string& problem_details);
[[nodiscard]] std::string get_id() const;
[[nodiscard]] virtual oai::pcf::app::sm_policy::status_code decide_policy(
oai::pcf::model::SmPolicyDecision& decision);
[[nodiscard]] virtual std::string get_id() const;
private:
oai::pcf::model::SmPolicyContextData m_context;
std::shared_ptr<oai::pcf::app::sm_policy::policy_decision> m_decision;
oai::pcf::app::sm_policy::policy_decision m_decision;
std::string m_id;
};
} // namespace oai::pcf::app::sm_policy
......
......@@ -45,7 +45,7 @@ status_code policy_decision::decide(
return status_code::CREATED;
}
SmPolicyDecision policy_decision::get_sm_policy_decision() const {
const SmPolicyDecision& policy_decision::get_sm_policy_decision() const {
return m_decision;
}
......
......@@ -47,6 +47,10 @@ class policy_decision {
m_decision = decision;
}
policy_decision(const policy_decision& other) {
m_decision = other.m_decision;
}
/**
* @brief Decides based on context on a policy. In case the return code is !=
* CREATED, the decision reference may be undefined
......@@ -56,7 +60,7 @@ class policy_decision {
* @return oai::pcf::app::sm_policy::status_code CREATED in case of
* success
*/
virtual oai::pcf::app::sm_policy::status_code decide(
[[nodiscard]] virtual oai::pcf::app::sm_policy::status_code decide(
const oai::pcf::model::SmPolicyContextData& context,
oai::pcf::model::SmPolicyDecision& decision) const;
......@@ -75,7 +79,7 @@ class policy_decision {
* @return oai::pcf::app::sm_policy::status_code OK in case of successful
* update
*/
virtual oai::pcf::app::sm_policy::status_code redecide(
[[nodiscard]] virtual oai::pcf::app::sm_policy::status_code redecide(
oai::pcf::model::SmPolicyContextData& original_context,
const oai::pcf::model::SmPolicyUpdateContextData& update_data,
oai::pcf::model::SmPolicyDecision& new_decision,
......@@ -83,8 +87,8 @@ class policy_decision {
virtual ~policy_decision() = default;
[[nodiscard]] oai::pcf::model::SmPolicyDecision get_sm_policy_decision()
const;
[[nodiscard]] virtual const oai::pcf::model::SmPolicyDecision&
get_sm_policy_decision() const;
[[nodiscard]] virtual std::string to_string() const;
......
......@@ -61,7 +61,7 @@ class slice_policy_decision : public oai::pcf::app::sm_policy::policy_decision {
* @return oai::pcf::app::sm_policy::status_code CREATED in case of
* success
*/
oai::pcf::app::sm_policy::status_code decide(
[[nodiscard]] oai::pcf::app::sm_policy::status_code decide(
const oai::pcf::model::SmPolicyContextData& context,
oai::pcf::model::SmPolicyDecision& decision) const override;
......
......@@ -62,7 +62,7 @@ class supi_policy_decision : public oai::pcf::app::sm_policy::policy_decision {
* @return oai::pcf::app::sm_policy::status_code CREATED in case of
* success
*/
oai::pcf::app::sm_policy::status_code decide(
[[nodiscard]] oai::pcf::app::sm_policy::status_code decide(
const oai::pcf::model::SmPolicyContextData& context,
oai::pcf::model::SmPolicyDecision& decision) const override;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment