Commit 4b0b2e1b authored by Tien Thinh NGUYEN's avatar Tien Thinh NGUYEN

Directly use shared_ptr instead of raw ptr

parent 622341fb
...@@ -238,7 +238,7 @@ bool amf_app::ran_amf_id_2_ue_context( ...@@ -238,7 +238,7 @@ bool amf_app::ran_amf_id_2_ue_context(
std::shared_lock lock(m_ue_ctx_key); std::shared_lock lock(m_ue_ctx_key);
if (ue_ctx_key.count(ue_context_key) > 0) { if (ue_ctx_key.count(ue_context_key) > 0) {
uc = ue_ctx_key.at(ue_context_key); uc = ue_ctx_key.at(ue_context_key);
if (uc.get() == nullptr) return false; if (uc == nullptr) return false;
return true; return true;
} else } else
return false; return false;
...@@ -278,7 +278,7 @@ bool amf_app::find_pdu_session_context( ...@@ -278,7 +278,7 @@ bool amf_app::find_pdu_session_context(
if (!is_supi_2_ue_context(supi)) return false; if (!is_supi_2_ue_context(supi)) return false;
std::shared_ptr<ue_context> uc = {}; std::shared_ptr<ue_context> uc = {};
uc = supi_2_ue_context(supi); uc = supi_2_ue_context(supi);
if (!uc.get()->find_pdu_session_context(pdu_session_id, psc)) return false; if (!uc->find_pdu_session_context(pdu_session_id, psc)) return false;
return true; return true;
} }
...@@ -289,7 +289,7 @@ bool amf_app::get_pdu_sessions_context( ...@@ -289,7 +289,7 @@ bool amf_app::get_pdu_sessions_context(
if (!is_supi_2_ue_context(supi)) return false; if (!is_supi_2_ue_context(supi)) return false;
std::shared_ptr<ue_context> uc = {}; std::shared_ptr<ue_context> uc = {};
uc = supi_2_ue_context(supi); uc = supi_2_ue_context(supi);
if (!uc.get()->get_pdu_sessions_context(sessions_ctx)) return false; if (!uc->get_pdu_sessions_context(sessions_ctx)) return false;
return true; return true;
} }
...@@ -311,8 +311,8 @@ void amf_app::handle_itti_message( ...@@ -311,8 +311,8 @@ void amf_app::handle_itti_message(
"Handle ITTI N1N2 Message Transfer Request for Paging"); "Handle ITTI N1N2 Message Transfer Request for Paging");
std::shared_ptr<itti_paging> i = std::shared_ptr<itti_paging> i =
std::make_shared<itti_paging>(TASK_AMF_APP, TASK_AMF_N2); std::make_shared<itti_paging>(TASK_AMF_APP, TASK_AMF_N2);
amf_n1_inst->supi_2_amf_id(itti_msg.supi, i.get()->amf_ue_ngap_id); amf_n1_inst->supi_2_amf_id(itti_msg.supi, i->amf_ue_ngap_id);
amf_n1_inst->supi_2_ran_id(itti_msg.supi, i.get()->ran_ue_ngap_id); amf_n1_inst->supi_2_ran_id(itti_msg.supi, i->ran_ue_ngap_id);
int ret = itti_inst->send_msg(i); int ret = itti_inst->send_msg(i);
if (0 != ret) { if (0 != ret) {
...@@ -388,27 +388,26 @@ void amf_app::handle_itti_message( ...@@ -388,27 +388,26 @@ void amf_app::handle_itti_message(
itti_msg.ran_ue_ngap_id); itti_msg.ran_ue_ngap_id);
} else { } else {
unc = amf_n2_inst->ran_ue_id_2_ue_ngap_context(itti_msg.ran_ue_ngap_id); unc = amf_n2_inst->ran_ue_id_2_ue_ngap_context(itti_msg.ran_ue_ngap_id);
unc.get()->amf_ue_ngap_id = amf_ue_ngap_id; unc->amf_ue_ngap_id = amf_ue_ngap_id;
amf_n2_inst->set_amf_ue_ngap_id_2_ue_ngap_context(amf_ue_ngap_id, unc); amf_n2_inst->set_amf_ue_ngap_id_2_ue_ngap_context(amf_ue_ngap_id, unc);
} }
// Create UE Context and store related information information // Create UE Context and store related information information
if (uc.get() == nullptr) { if (uc == nullptr) {
Logger::amf_app().error( Logger::amf_app().error(
"Failed to create ue_context with ran_amf_id %s", "Failed to create ue_context with ran_amf_id %s",
ue_context_key.c_str()); ue_context_key.c_str());
} else { } else {
uc.get()->cgi = itti_msg.cgi; uc->cgi = itti_msg.cgi;
uc.get()->tai = itti_msg.tai; uc->tai = itti_msg.tai;
if (itti_msg.rrc_cause != -1) if (itti_msg.rrc_cause != -1)
uc.get()->rrc_estb_cause = uc->rrc_estb_cause = (e_Ngap_RRCEstablishmentCause) itti_msg.rrc_cause;
(e_Ngap_RRCEstablishmentCause) itti_msg.rrc_cause;
if (itti_msg.ueCtxReq == -1) if (itti_msg.ueCtxReq == -1)
uc.get()->isUeContextRequest = false; uc->isUeContextRequest = false;
else else
uc.get()->isUeContextRequest = true; uc->isUeContextRequest = true;
uc.get()->ran_ue_ngap_id = itti_msg.ran_ue_ngap_id; uc->ran_ue_ngap_id = itti_msg.ran_ue_ngap_id;
uc.get()->amf_ue_ngap_id = amf_ue_ngap_id; uc->amf_ue_ngap_id = amf_ue_ngap_id;
std::string guti; std::string guti;
bool is_guti_valid = false; bool is_guti_valid = false;
...@@ -536,7 +535,7 @@ void amf_app::handle_itti_message(itti_sbi_n1_message_notification& itti_msg) { ...@@ -536,7 +535,7 @@ void amf_app::handle_itti_message(itti_sbi_n1_message_notification& itti_msg) {
long amf_ue_ngap_id = INVALID_AMF_UE_NGAP_ID; long amf_ue_ngap_id = INVALID_AMF_UE_NGAP_ID;
// Generate AMF UE NGAP ID if necessary // Generate AMF UE NGAP ID if necessary
if (!uc.get()) { // No UE context existed if (!uc) { // No UE context existed
amf_ue_ngap_id = generate_amf_ue_ngap_id(); amf_ue_ngap_id = generate_amf_ue_ngap_id();
} else { } else {
if ((amf_ue_ngap_id = uc->amf_ue_ngap_id) == INVALID_AMF_UE_NGAP_ID) { if ((amf_ue_ngap_id = uc->amf_ue_ngap_id) == INVALID_AMF_UE_NGAP_ID) {
...@@ -550,7 +549,7 @@ void amf_app::handle_itti_message(itti_sbi_n1_message_notification& itti_msg) { ...@@ -550,7 +549,7 @@ void amf_app::handle_itti_message(itti_sbi_n1_message_notification& itti_msg) {
Logger::amf_app().debug( Logger::amf_app().debug(
"No existing UE Context associated with UE Context Key %s", "No existing UE Context associated with UE Context Key %s",
ue_context_key.c_str()); ue_context_key.c_str());
if (!uc.get()) { if (!uc) {
// Create a new UE Context // Create a new UE Context
Logger::amf_app().debug( Logger::amf_app().debug(
"Create a new UE Context with UE Context Key", "Create a new UE Context with UE Context Key",
...@@ -562,14 +561,14 @@ void amf_app::handle_itti_message(itti_sbi_n1_message_notification& itti_msg) { ...@@ -562,14 +561,14 @@ void amf_app::handle_itti_message(itti_sbi_n1_message_notification& itti_msg) {
uc = ran_amf_id_2_ue_context(ue_context_key); uc = ran_amf_id_2_ue_context(ue_context_key);
} }
// Return if UE Context is still invalid // Return if UE Context is still invalid
if (!uc.get()) { if (!uc) {
Logger::amf_app().error("Failed to get UE Context"); Logger::amf_app().error("Failed to get UE Context");
return; return;
} }
// Update info for UE context // Update info for UE context
uc.get()->amf_ue_ngap_id = amf_ue_ngap_id; uc->amf_ue_ngap_id = amf_ue_ngap_id;
uc.get()->ran_ue_ngap_id = ran_ue_ngap_id; uc->ran_ue_ngap_id = ran_ue_ngap_id;
// RrcEstCause // RrcEstCause
if (registration_context.rrcEstCauseIsSet()) { if (registration_context.rrcEstCauseIsSet()) {
uint8_t rrc_cause = {}; uint8_t rrc_cause = {};
...@@ -583,10 +582,10 @@ void amf_app::handle_itti_message(itti_sbi_n1_message_notification& itti_msg) { ...@@ -583,10 +582,10 @@ void amf_app::handle_itti_message(itti_sbi_n1_message_notification& itti_msg) {
rrc_cause = 0; rrc_cause = 0;
} }
uc.get()->rrc_estb_cause = (e_Ngap_RRCEstablishmentCause) rrc_cause; uc->rrc_estb_cause = (e_Ngap_RRCEstablishmentCause) rrc_cause;
} }
// ueContextRequest // ueContextRequest
uc.get()->isUeContextRequest = registration_context.isUeContextRequest(); uc->isUeContextRequest = registration_context.isUeContextRequest();
// Step 4. Create UE NGAP Context if necessary // Step 4. Create UE NGAP Context if necessary
// Create/Update UE NGAP Context // Create/Update UE NGAP Context
...@@ -599,7 +598,7 @@ void amf_app::handle_itti_message(itti_sbi_n1_message_notification& itti_msg) { ...@@ -599,7 +598,7 @@ void amf_app::handle_itti_message(itti_sbi_n1_message_notification& itti_msg) {
amf_n2_inst->set_ran_ue_ngap_id_2_ue_ngap_context(ran_ue_ngap_id, unc); amf_n2_inst->set_ran_ue_ngap_id_2_ue_ngap_context(ran_ue_ngap_id, unc);
} else { } else {
unc = amf_n2_inst->ran_ue_id_2_ue_ngap_context(ran_ue_ngap_id); unc = amf_n2_inst->ran_ue_id_2_ue_ngap_context(ran_ue_ngap_id);
if (!unc.get()) { if (!unc) {
Logger::amf_app().error( Logger::amf_app().error(
"Failed to get UE NGAP context for " "Failed to get UE NGAP context for "
"ran_ue_ngap_id " GNB_UE_NGAP_ID_FMT, "ran_ue_ngap_id " GNB_UE_NGAP_ID_FMT,
...@@ -609,12 +608,12 @@ void amf_app::handle_itti_message(itti_sbi_n1_message_notification& itti_msg) { ...@@ -609,12 +608,12 @@ void amf_app::handle_itti_message(itti_sbi_n1_message_notification& itti_msg) {
} }
// Store related information into UE NGAP context // Store related information into UE NGAP context
unc.get()->ran_ue_ngap_id = ran_ue_ngap_id; unc->ran_ue_ngap_id = ran_ue_ngap_id;
// TODO: unc.get()->sctp_stream_recv // TODO: unc->sctp_stream_recv
// TODO: unc.get()->sctp_stream_send // TODO: unc->sctp_stream_send
// TODO: gc.get()->next_sctp_stream // TODO: gc->next_sctp_stream
// TODO: unc.get()->gnb_assoc_id // TODO: unc->gnb_assoc_id
// TODO: unc.get()->tai // TODO: unc->tai
// Step 5. Trigger the procedure following RegistrationRequest // Step 5. Trigger the procedure following RegistrationRequest
...@@ -864,10 +863,10 @@ bool amf_app::generate_5g_guti( ...@@ -864,10 +863,10 @@ bool amf_app::generate_5g_guti(
} }
std::shared_ptr<ue_context> uc = {}; std::shared_ptr<ue_context> uc = {};
uc = ran_amf_id_2_ue_context(ue_context_key); uc = ran_amf_id_2_ue_context(ue_context_key);
mcc = uc.get()->tai.mcc; mcc = uc->tai.mcc;
mnc = uc.get()->tai.mnc; mnc = uc->tai.mnc;
tmsi = generate_tmsi(); tmsi = generate_tmsi();
uc.get()->tmsi = tmsi; uc->tmsi = tmsi;
return true; return true;
} }
...@@ -889,19 +888,18 @@ evsub_id_t amf_app::handle_event_exposure_subscription( ...@@ -889,19 +888,18 @@ evsub_id_t amf_app::handle_event_exposure_subscription(
// store subscription // store subscription
for (auto i : event_subscriptions) { for (auto i : event_subscriptions) {
std::shared_ptr<amf_subscription> ss = std::make_shared<amf_subscription>(); std::shared_ptr<amf_subscription> ss = std::make_shared<amf_subscription>();
ss.get()->sub_id = evsub_id; ss->sub_id = evsub_id;
// TODO: // TODO:
if (msg->event_exposure.is_supi_is_set()) { if (msg->event_exposure.is_supi_is_set()) {
ss.get()->supi = msg->event_exposure.get_supi(); ss->supi = msg->event_exposure.get_supi();
ss.get()->supi_is_set = true; ss->supi_is_set = true;
} }
ss.get()->notify_correlation_id = ss->notify_correlation_id = msg->event_exposure.get_notify_correlation_id();
msg->event_exposure.get_notify_correlation_id(); ss->notify_uri = msg->event_exposure.get_notify_uri();
ss.get()->notify_uri = msg->event_exposure.get_notify_uri(); ss->nf_id = msg->event_exposure.get_nf_id();
ss.get()->nf_id = msg->event_exposure.get_nf_id(); ss->ev_type = i.type;
ss.get()->ev_type = i.type;
add_event_subscription(evsub_id, i.type, ss); add_event_subscription(evsub_id, i.type, ss);
ss.get()->display(); ss->display();
} }
return evsub_id; return evsub_id;
} }
......
...@@ -967,7 +967,7 @@ bool amf_config::get_smf_pdu_session_context_uri( ...@@ -967,7 +967,7 @@ bool amf_config::get_smf_pdu_session_context_uri(
const std::shared_ptr<pdu_session_context>& psc, std::string& smf_uri) { const std::shared_ptr<pdu_session_context>& psc, std::string& smf_uri) {
if (!psc) return false; if (!psc) return false;
if (!psc.get()->smf_info.info_available) { if (!psc->smf_info.info_available) {
Logger::amf_sbi().error("No SMF is available for this PDU session"); Logger::amf_sbi().error("No SMF is available for this PDU session");
return false; return false;
} }
...@@ -986,11 +986,11 @@ bool amf_config::get_smf_pdu_session_context_uri( ...@@ -986,11 +986,11 @@ bool amf_config::get_smf_pdu_session_context_uri(
else else
smf_ip_addr = smf_addr; smf_ip_addr = smf_addr;
std::size_t found = psc.get()->smf_info.context_location.find(smf_ip_addr); std::size_t found = psc->smf_info.context_location.find(smf_ip_addr);
if (found != std::string::npos) if (found != std::string::npos)
smf_uri = psc.get()->smf_info.context_location; smf_uri = psc->smf_info.context_location;
else else
smf_uri = smf_addr + ":" + smf_port + psc.get()->smf_info.context_location; smf_uri = smf_addr + ":" + smf_port + psc->smf_info.context_location;
return true; return true;
} }
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -94,28 +94,27 @@ void ngap_app::handle_sctp_new_association( ...@@ -94,28 +94,27 @@ void ngap_app::handle_sctp_new_association(
gc = std::shared_ptr<gnb_context>(new gnb_context()); gc = std::shared_ptr<gnb_context>(new gnb_context());
set_assoc_id_2_gnb_context(assoc_id, gc); set_assoc_id_2_gnb_context(assoc_id, gc);
} else { } else {
if (gc.get()->ng_state == NGAP_RESETING || if (gc->ng_state == NGAP_RESETING || gc->ng_state == NGAP_SHUTDOWN) {
gc.get()->ng_state == NGAP_SHUTDOWN) {
Logger::ngap().warn( Logger::ngap().warn(
"Received a new association request on an association that is being " "Received a new association request on an association that is being "
"%s, ignoring", "%s, ignoring",
ng_gnb_state_str[gc.get()->ng_state]); ng_gnb_state_str[gc->ng_state]);
} else { } else {
Logger::ngap().debug("Update gNB context with assoc id (%d)", assoc_id); Logger::ngap().debug("Update gNB context with assoc id (%d)", assoc_id);
} }
} }
if (gc.get() == nullptr) { if (gc == nullptr) {
Logger::ngap().error( Logger::ngap().error(
"Failed to create gNB context for assoc_id (%d)", assoc_id); "Failed to create gNB context for assoc_id (%d)", assoc_id);
return; return;
}; };
gc.get()->sctp_assoc_id = assoc_id; gc->sctp_assoc_id = assoc_id;
gc.get()->instreams = instreams; gc->instreams = instreams;
gc.get()->outstreams = outstreams; gc->outstreams = outstreams;
gc.get()->next_sctp_stream = 1; gc->next_sctp_stream = 1;
gc.get()->ng_state = NGAP_INIT; gc->ng_state = NGAP_INIT;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
...@@ -152,7 +151,7 @@ bool ngap_app::is_assoc_id_2_gnb_context( ...@@ -152,7 +151,7 @@ bool ngap_app::is_assoc_id_2_gnb_context(
std::shared_lock lock(m_assoc2gnbContext); std::shared_lock lock(m_assoc2gnbContext);
if (assoc2gnbContext.count(assoc_id) > 0) { if (assoc2gnbContext.count(assoc_id) > 0) {
gc = assoc2gnbContext.at(assoc_id); gc = assoc2gnbContext.at(assoc_id);
if (gc.get() != nullptr) return true; if (gc != nullptr) return true;
} }
return false; return false;
} }
......
...@@ -410,7 +410,7 @@ int ngap_amf_handle_pdu_session_resource_setup_response( ...@@ -410,7 +410,7 @@ int ngap_amf_handle_pdu_session_resource_setup_response(
"No UE NAS context with amf_ue_ngap_id (0x%x)", amf_ue_ngap_id); "No UE NAS context with amf_ue_ngap_id (0x%x)", amf_ue_ngap_id);
return RETURNerror; return RETURNerror;
} }
itti_msg->supi = "imsi-" + nct.get()->imsi; itti_msg->supi = "imsi-" + nct->imsi;
itti_msg->pdu_session_id = list[0].pduSessionId; itti_msg->pdu_session_id = list[0].pduSessionId;
itti_msg->n2sm = blk2bstr( itti_msg->n2sm = blk2bstr(
list[0].pduSessionResourceSetupResponseTransfer.buf, list[0].pduSessionResourceSetupResponseTransfer.buf,
...@@ -477,16 +477,16 @@ int ngap_amf_handle_pdu_session_resource_setup_response( ...@@ -477,16 +477,16 @@ int ngap_amf_handle_pdu_session_resource_setup_response(
return RETURNerror; return RETURNerror;
} }
string supi = "imsi-" + nct.get()->imsi; string supi = "imsi-" + nct->imsi;
std::shared_ptr<pdu_session_context> psc = {}; std::shared_ptr<pdu_session_context> psc = {};
if (amf_app_inst->find_pdu_session_context( if (amf_app_inst->find_pdu_session_context(
supi, list_fail[0].pduSessionId, psc)) { supi, list_fail[0].pduSessionId, psc)) {
if (psc.get() == nullptr) { if (psc == nullptr) {
Logger::ngap().error("Cannot get pdu_session_context"); Logger::ngap().error("Cannot get pdu_session_context");
return RETURNerror; return RETURNerror;
} }
} }
psc.get()->is_n2sm_avaliable = false; psc->is_n2sm_avaliable = false;
Logger::ngap().debug( Logger::ngap().debug(
"Receive pdu session resource setup response fail (multi pdu session " "Receive pdu session resource setup response fail (multi pdu session "
"id),set pdu session context is_n2sm_avaliable = false"); "id),set pdu session context is_n2sm_avaliable = false");
......
...@@ -184,14 +184,14 @@ void amf_http2_server::n1_n2_message_transfer_handler( ...@@ -184,14 +184,14 @@ void amf_http2_server::n1_n2_message_transfer_handler(
bstring n2sm; bstring n2sm;
if (!n2sm_str.empty()) { if (!n2sm_str.empty()) {
conv::msg_str_2_msg_hex(n2sm_str, n2sm); conv::msg_str_2_msg_hex(n2sm_str, n2sm);
psc.get()->n2sm = n2sm; psc->n2sm = n2sm;
psc.get()->is_n2sm_avaliable = true; psc->is_n2sm_avaliable = true;
} else { } else {
psc.get()->is_n2sm_avaliable = false; psc->is_n2sm_avaliable = false;
} }
psc.get()->n1sm = n1sm; psc->n1sm = n1sm;
psc.get()->is_n1sm_avaliable = true; psc->is_n1sm_avaliable = true;
itti_n1n2_message_transfer_request* itti_msg = itti_n1n2_message_transfer_request* itti_msg =
new itti_n1n2_message_transfer_request(AMF_SERVER, TASK_AMF_APP); new itti_n1n2_message_transfer_request(AMF_SERVER, TASK_AMF_APP);
......
...@@ -95,12 +95,11 @@ void N1N2MessageCollectionDocumentApiImpl::n1_n2_message_transfer( ...@@ -95,12 +95,11 @@ void N1N2MessageCollectionDocumentApiImpl::n1_n2_message_transfer(
bstring n2sm; bstring n2sm;
conv::msg_str_2_msg_hex(n2sm_str, n2sm); conv::msg_str_2_msg_hex(n2sm_str, n2sm);
psc.get()->n1sm = n1sm; psc->n1sm = n1sm;
psc.get()->is_n1sm_avaliable = true; psc->is_n1sm_avaliable = true;
psc.get()->n2sm = n2sm; psc->n2sm = n2sm;
psc.get()->is_n2sm_avaliable = true; psc->is_n2sm_avaliable = true;
Logger::amf_server().debug( Logger::amf_server().debug("n2sm size in amf_server(%d)", blength(psc->n2sm));
"n2sm size in amf_server(%d)", blength(psc.get()->n2sm));
itti_n1n2_message_transfer_request* itti_msg = itti_n1n2_message_transfer_request* itti_msg =
new itti_n1n2_message_transfer_request(AMF_SERVER, TASK_AMF_APP); new itti_n1n2_message_transfer_request(AMF_SERVER, TASK_AMF_APP);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment