Commit 3edbfd8c authored by Tien Thinh NGUYEN's avatar Tien Thinh NGUYEN

Code refactor for PduSessionResourceReleaseResponse

parent ff3d6770
...@@ -30,48 +30,45 @@ PDUSessionResourceReleasedItemRelRes::PDUSessionResourceReleasedItemRelRes() {} ...@@ -30,48 +30,45 @@ PDUSessionResourceReleasedItemRelRes::PDUSessionResourceReleasedItemRelRes() {}
PDUSessionResourceReleasedItemRelRes::~PDUSessionResourceReleasedItemRelRes() {} PDUSessionResourceReleasedItemRelRes::~PDUSessionResourceReleasedItemRelRes() {}
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void PDUSessionResourceReleasedItemRelRes:: void PDUSessionResourceReleasedItemRelRes::set(
setPDUSessionResourceReleasedItemRelRes( const PDUSessionID& pdu_session_id,
const PDUSessionID& m_pDUSessionID, const OCTET_STRING_t& pdu_session_resource_release_response_transfer) {
const OCTET_STRING_t& m_pDUSessionResourceReleaseResponseTransfer) { pdu_session_id_ = pdu_session_id;
pDUSessionID = m_pDUSessionID; pdu_session_resource_release_response_transfer_ =
pDUSessionResourceReleaseResponseTransfer = pdu_session_resource_release_response_transfer;
m_pDUSessionResourceReleaseResponseTransfer;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void PDUSessionResourceReleasedItemRelRes:: void PDUSessionResourceReleasedItemRelRes::get(
getPDUSessionResourceReleasedItemRelRes( PDUSessionID& pdu_session_id,
PDUSessionID& m_pDUSessionID, OCTET_STRING_t& pdu_session_resource_release_response_transfer) {
OCTET_STRING_t& m_pDUSessionResourceReleaseResponseTransfer) { pdu_session_id = pdu_session_id_;
m_pDUSessionID = pDUSessionID; pdu_session_resource_release_response_transfer =
m_pDUSessionResourceReleaseResponseTransfer = pdu_session_resource_release_response_transfer_;
pDUSessionResourceReleaseResponseTransfer;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
bool PDUSessionResourceReleasedItemRelRes:: bool PDUSessionResourceReleasedItemRelRes::encode(
encode2PDUSessionResourceReleasedItemRelRes( Ngap_PDUSessionResourceReleasedItemRelRes_t*
Ngap_PDUSessionResourceReleasedItemRelRes_t* pdu_session_resource_released_item_rel_res) {
pduSessionResourceReleasedItemRelRes) { if (!pdu_session_id_.encode(
if (!pDUSessionID.encode(pduSessionResourceReleasedItemRelRes->pDUSessionID)) pdu_session_resource_released_item_rel_res->pDUSessionID))
return false; return false;
pduSessionResourceReleasedItemRelRes pdu_session_resource_released_item_rel_res
->pDUSessionResourceReleaseResponseTransfer = ->pDUSessionResourceReleaseResponseTransfer =
pDUSessionResourceReleaseResponseTransfer; pdu_session_resource_release_response_transfer_;
return true; return true;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
bool PDUSessionResourceReleasedItemRelRes:: bool PDUSessionResourceReleasedItemRelRes::decode(
decodefromPDUSessionResourceReleasedItemRelRes( Ngap_PDUSessionResourceReleasedItemRelRes_t*
Ngap_PDUSessionResourceReleasedItemRelRes_t* pdu_session_resource_released_item_rel_res) {
pduSessionResourceReleasedItemRelRes) { pdu_session_id_.set(pdu_session_resource_released_item_rel_res->pDUSessionID);
pDUSessionID.set(pduSessionResourceReleasedItemRelRes->pDUSessionID); pdu_session_resource_release_response_transfer_ =
pDUSessionResourceReleaseResponseTransfer = pdu_session_resource_released_item_rel_res
pduSessionResourceReleasedItemRelRes
->pDUSessionResourceReleaseResponseTransfer; ->pDUSessionResourceReleaseResponseTransfer;
return true; return true;
......
...@@ -35,24 +35,22 @@ class PDUSessionResourceReleasedItemRelRes { ...@@ -35,24 +35,22 @@ class PDUSessionResourceReleasedItemRelRes {
PDUSessionResourceReleasedItemRelRes(); PDUSessionResourceReleasedItemRelRes();
virtual ~PDUSessionResourceReleasedItemRelRes(); virtual ~PDUSessionResourceReleasedItemRelRes();
void setPDUSessionResourceReleasedItemRelRes( void set(
const PDUSessionID& m_pDUSessionID, const PDUSessionID& pdu_session_id,
const OCTET_STRING_t& m_pDUSessionResourceReleaseResponseTransfer); const OCTET_STRING_t& pdu_session_resource_release_response_transfer);
void getPDUSessionResourceReleasedItemRelRes( void get(
PDUSessionID& m_pDUSessionID, PDUSessionID& pdu_session_id,
OCTET_STRING_t& m_pDUSessionResourceReleaseResponseTransfer); OCTET_STRING_t& pdu_session_resource_release_response_transfer);
bool encode2PDUSessionResourceReleasedItemRelRes( bool encode(Ngap_PDUSessionResourceReleasedItemRelRes_t*
Ngap_PDUSessionResourceReleasedItemRelRes_t* pdu_session_resource_released_item_rel_res);
pduSessionResourceReleasedItemRelRes); bool decode(Ngap_PDUSessionResourceReleasedItemRelRes_t*
bool decodefromPDUSessionResourceReleasedItemRelRes( pdu_session_resource_released_item_rel_res);
Ngap_PDUSessionResourceReleasedItemRelRes_t*
pduSessionResourceReleasedItemRelRes);
private: private:
PDUSessionID pDUSessionID; PDUSessionID pdu_session_id_;
OCTET_STRING_t pDUSessionResourceReleaseResponseTransfer; OCTET_STRING_t pdu_session_resource_release_response_transfer_;
}; };
} // namespace ngap } // namespace ngap
......
...@@ -30,47 +30,44 @@ PDUSessionResourceReleasedListRelRes::PDUSessionResourceReleasedListRelRes() {} ...@@ -30,47 +30,44 @@ PDUSessionResourceReleasedListRelRes::PDUSessionResourceReleasedListRelRes() {}
PDUSessionResourceReleasedListRelRes::~PDUSessionResourceReleasedListRelRes() {} PDUSessionResourceReleasedListRelRes::~PDUSessionResourceReleasedListRelRes() {}
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void PDUSessionResourceReleasedListRelRes:: void PDUSessionResourceReleasedListRelRes::set(
setPDUSessionResourceReleasedListRelRes( const std::vector<PDUSessionResourceReleasedItemRelRes>& list) {
const std::vector<PDUSessionResourceReleasedItemRelRes>& list) { item_list_ = list;
itemRelResList = list;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void PDUSessionResourceReleasedListRelRes:: void PDUSessionResourceReleasedListRelRes::get(
getPDUSessionResourceReleasedListRelRes( std::vector<PDUSessionResourceReleasedItemRelRes>& list) {
std::vector<PDUSessionResourceReleasedItemRelRes>& list) { list = item_list_;
list = itemRelResList;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
bool PDUSessionResourceReleasedListRelRes:: bool PDUSessionResourceReleasedListRelRes::encode(
encode2PDUSessionResourceReleasedListRelRes( Ngap_PDUSessionResourceReleasedListRelRes_t&
Ngap_PDUSessionResourceReleasedListRelRes_t* pdu_session_resource_released_list_rel_res) {
pduSessionResourceReleasedListRelRes) { for (auto& item : item_list_) {
for (auto& item : itemRelResList) {
Ngap_PDUSessionResourceReleasedItemRelRes_t* rel = Ngap_PDUSessionResourceReleasedItemRelRes_t* rel =
(Ngap_PDUSessionResourceReleasedItemRelRes_t*) calloc( (Ngap_PDUSessionResourceReleasedItemRelRes_t*) calloc(
1, sizeof(Ngap_PDUSessionResourceReleasedItemRelRes_t)); 1, sizeof(Ngap_PDUSessionResourceReleasedItemRelRes_t));
if (!rel) return false; if (!rel) return false;
if (!item.encode2PDUSessionResourceReleasedItemRelRes(rel)) return false; if (!item.encode(rel)) return false;
if (ASN_SEQUENCE_ADD(&pduSessionResourceReleasedListRelRes->list, rel) != 0) if (ASN_SEQUENCE_ADD(
&pdu_session_resource_released_list_rel_res.list, rel) != 0)
return false; return false;
} }
return true; return true;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
bool PDUSessionResourceReleasedListRelRes:: bool PDUSessionResourceReleasedListRelRes::decode(
decodefromPDUSessionResourceReleasedListRelRes( const Ngap_PDUSessionResourceReleasedListRelRes_t&
Ngap_PDUSessionResourceReleasedListRelRes_t* pdu_session_resource_released_list_rel_res) {
pduSessionResourceReleasedListRelRes) { for (int i = 0; i < pdu_session_resource_released_list_rel_res.list.count;
for (int i = 0; i < pduSessionResourceReleasedListRelRes->list.count; i++) { i++) {
PDUSessionResourceReleasedItemRelRes item = {}; PDUSessionResourceReleasedItemRelRes item = {};
if (!item.decodefromPDUSessionResourceReleasedItemRelRes( if (!item.decode(pdu_session_resource_released_list_rel_res.list.array[i]))
pduSessionResourceReleasedListRelRes->list.array[i]))
return false; return false;
itemRelResList.push_back(item); item_list_.push_back(item);
} }
return true; return true;
} }
......
...@@ -37,22 +37,18 @@ class PDUSessionResourceReleasedListRelRes { ...@@ -37,22 +37,18 @@ class PDUSessionResourceReleasedListRelRes {
PDUSessionResourceReleasedListRelRes(); PDUSessionResourceReleasedListRelRes();
virtual ~PDUSessionResourceReleasedListRelRes(); virtual ~PDUSessionResourceReleasedListRelRes();
void setPDUSessionResourceReleasedListRelRes( void set(const std::vector<PDUSessionResourceReleasedItemRelRes>& list);
const std::vector<PDUSessionResourceReleasedItemRelRes>& list);
void getPDUSessionResourceReleasedListRelRes( void get(std::vector<PDUSessionResourceReleasedItemRelRes>& list);
std::vector<PDUSessionResourceReleasedItemRelRes>& list);
bool encode2PDUSessionResourceReleasedListRelRes( bool encode(Ngap_PDUSessionResourceReleasedListRelRes_t&
Ngap_PDUSessionResourceReleasedListRelRes_t* pdu_session_resource_released_list_rel_res);
pduSessionResourceReleasedListRelRes);
bool decodefromPDUSessionResourceReleasedListRelRes( bool decode(const Ngap_PDUSessionResourceReleasedListRelRes_t&
Ngap_PDUSessionResourceReleasedListRelRes_t* pdu_session_resource_released_list_rel_res);
pduSessionResourceReleasedListRelRes);
private: private:
std::vector<PDUSessionResourceReleasedItemRelRes> itemRelResList; std::vector<PDUSessionResourceReleasedItemRelRes> item_list_;
}; };
} // namespace ngap } // namespace ngap
......
...@@ -35,7 +35,7 @@ namespace ngap { ...@@ -35,7 +35,7 @@ namespace ngap {
PduSessionResourceReleaseResponseMsg::PduSessionResourceReleaseResponseMsg() PduSessionResourceReleaseResponseMsg::PduSessionResourceReleaseResponseMsg()
: NgapUEMessage() { : NgapUEMessage() {
pduSessionResourceReleaseResponseIEs = nullptr; pduSessionResourceReleaseResponseIEs = nullptr;
userLocationInformation = nullptr; userLocationInformation = std::nullopt;
setMessageType(NgapMessageType::PDU_SESSION_RESOURCE_RELEASE_RESPONSE); setMessageType(NgapMessageType::PDU_SESSION_RESOURCE_RELEASE_RESPONSE);
initialize(); initialize();
...@@ -105,19 +105,18 @@ void PduSessionResourceReleaseResponseMsg::setRanUeNgapId( ...@@ -105,19 +105,18 @@ void PduSessionResourceReleaseResponseMsg::setRanUeNgapId(
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void PduSessionResourceReleaseResponseMsg::setPduSessionResourceReleasedList( void PduSessionResourceReleaseResponseMsg::setPduSessionResourceReleasedList(
const std::vector<PDUSessionResourceReleasedItem_t>& list) { const std::vector<PDUSessionResourceReleasedItem_t>& list) {
std::vector<PDUSessionResourceReleasedItemRelRes> itemRelResList; std::vector<PDUSessionResourceReleasedItemRelRes> item_rel_res_list;
for (int i = 0; i < list.size(); i++) { for (int i = 0; i < list.size(); i++) {
PDUSessionResourceReleasedItemRelRes itemRelRes = {}; PDUSessionResourceReleasedItemRelRes item_rel_res = {};
PDUSessionID pDUSessionID = {}; PDUSessionID pdu_session_id = {};
pDUSessionID.set(list[i].pduSessionId); pdu_session_id.set(list[i].pduSessionId);
itemRelRes.setPDUSessionResourceReleasedItemRelRes( item_rel_res.set(
pDUSessionID, list[i].pduSessionResourceReleaseResponseTransfer); pdu_session_id, list[i].pduSessionResourceReleaseResponseTransfer);
itemRelResList.push_back(itemRelRes); item_rel_res_list.push_back(item_rel_res);
} }
pduSessionResourceReleasedList.setPDUSessionResourceReleasedListRelRes( pduSessionResourceReleasedList.set(item_rel_res_list);
itemRelResList);
Ngap_PDUSessionResourceReleaseResponseIEs_t* ie = Ngap_PDUSessionResourceReleaseResponseIEs_t* ie =
(Ngap_PDUSessionResourceReleaseResponseIEs_t*) calloc( (Ngap_PDUSessionResourceReleaseResponseIEs_t*) calloc(
...@@ -128,9 +127,8 @@ void PduSessionResourceReleaseResponseMsg::setPduSessionResourceReleasedList( ...@@ -128,9 +127,8 @@ void PduSessionResourceReleaseResponseMsg::setPduSessionResourceReleasedList(
ie->value.present = ie->value.present =
Ngap_PDUSessionResourceReleaseResponseIEs__value_PR_PDUSessionResourceReleasedListRelRes; Ngap_PDUSessionResourceReleaseResponseIEs__value_PR_PDUSessionResourceReleasedListRelRes;
int ret = pduSessionResourceReleasedList int ret = pduSessionResourceReleasedList.encode(
.encode2PDUSessionResourceReleasedListRelRes( ie->value.choice.PDUSessionResourceReleasedListRelRes);
&ie->value.choice.PDUSessionResourceReleasedListRelRes);
if (!ret) { if (!ret) {
Logger::nas_mm().warn( Logger::nas_mm().warn(
"Encode PDUSessionResourceReleasedListRelRes IE error"); "Encode PDUSessionResourceReleasedListRelRes IE error");
...@@ -148,17 +146,15 @@ void PduSessionResourceReleaseResponseMsg::setPduSessionResourceReleasedList( ...@@ -148,17 +146,15 @@ void PduSessionResourceReleaseResponseMsg::setPduSessionResourceReleasedList(
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
bool PduSessionResourceReleaseResponseMsg::getPduSessionResourceReleasedList( bool PduSessionResourceReleaseResponseMsg::getPduSessionResourceReleasedList(
std::vector<PDUSessionResourceReleasedItem_t>& list) { std::vector<PDUSessionResourceReleasedItem_t>& list) {
std::vector<PDUSessionResourceReleasedItemRelRes> itemRelResList; std::vector<PDUSessionResourceReleasedItemRelRes> item_rel_res_list;
pduSessionResourceReleasedList.getPDUSessionResourceReleasedListRelRes( pduSessionResourceReleasedList.get(item_rel_res_list);
itemRelResList);
for (auto& item : itemRelResList) { for (auto& item : item_rel_res_list) {
PDUSessionResourceReleasedItem_t rel = {}; PDUSessionResourceReleasedItem_t rel = {};
PDUSessionID pDUSessionID = {}; PDUSessionID pdu_session_id = {};
item.getPDUSessionResourceReleasedItemRelRes( item.get(pdu_session_id, rel.pduSessionResourceReleaseResponseTransfer);
pDUSessionID, rel.pduSessionResourceReleaseResponseTransfer); pdu_session_id.get(rel.pduSessionId);
pDUSessionID.get(rel.pduSessionId);
list.push_back(rel); list.push_back(rel);
} }
...@@ -169,8 +165,7 @@ bool PduSessionResourceReleaseResponseMsg::getPduSessionResourceReleasedList( ...@@ -169,8 +165,7 @@ bool PduSessionResourceReleaseResponseMsg::getPduSessionResourceReleasedList(
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void PduSessionResourceReleaseResponseMsg::setUserLocationInfoNR( void PduSessionResourceReleaseResponseMsg::setUserLocationInfoNR(
const NrCgi_t& cig, const Tai_t& tai) { const NrCgi_t& cig, const Tai_t& tai) {
if (!userLocationInformation) UserLocationInformation tmp = {};
userLocationInformation = new UserLocationInformation();
UserLocationInformationNR information_nr = {}; UserLocationInformationNR information_nr = {};
NR_CGI nR_CGI = {}; NR_CGI nR_CGI = {};
...@@ -178,7 +173,8 @@ void PduSessionResourceReleaseResponseMsg::setUserLocationInfoNR( ...@@ -178,7 +173,8 @@ void PduSessionResourceReleaseResponseMsg::setUserLocationInfoNR(
nR_CGI.setNR_CGI(cig.mcc, cig.mnc, cig.nrCellID); nR_CGI.setNR_CGI(cig.mcc, cig.mnc, cig.nrCellID);
tai_nr.setTAI(tai); tai_nr.setTAI(tai);
information_nr.set(nR_CGI, tai_nr); information_nr.set(nR_CGI, tai_nr);
userLocationInformation->setInformation(information_nr); tmp.setInformation(information_nr);
userLocationInformation = std::optional<UserLocationInformation>(tmp);
Ngap_PDUSessionResourceReleaseResponseIEs_t* ie = Ngap_PDUSessionResourceReleaseResponseIEs_t* ie =
(Ngap_PDUSessionResourceReleaseResponseIEs_t*) calloc( (Ngap_PDUSessionResourceReleaseResponseIEs_t*) calloc(
...@@ -188,7 +184,7 @@ void PduSessionResourceReleaseResponseMsg::setUserLocationInfoNR( ...@@ -188,7 +184,7 @@ void PduSessionResourceReleaseResponseMsg::setUserLocationInfoNR(
ie->value.present = ie->value.present =
Ngap_PDUSessionResourceReleaseResponseIEs__value_PR_UserLocationInformation; Ngap_PDUSessionResourceReleaseResponseIEs__value_PR_UserLocationInformation;
int ret = userLocationInformation->encode( int ret = userLocationInformation.value().encode(
&ie->value.choice.UserLocationInformation); &ie->value.choice.UserLocationInformation);
if (!ret) { if (!ret) {
Logger::nas_mm().warn("Encode UserLocationInformation IE error"); Logger::nas_mm().warn("Encode UserLocationInformation IE error");
...@@ -206,10 +202,13 @@ void PduSessionResourceReleaseResponseMsg::setUserLocationInfoNR( ...@@ -206,10 +202,13 @@ void PduSessionResourceReleaseResponseMsg::setUserLocationInfoNR(
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
bool PduSessionResourceReleaseResponseMsg::getUserLocationInfoNR( bool PduSessionResourceReleaseResponseMsg::getUserLocationInfoNR(
NrCgi_t& cig, Tai_t& tai) { NrCgi_t& cig, Tai_t& tai) {
if (!userLocationInformation.has_value()) return false;
UserLocationInformationNR information_nr = {}; UserLocationInformationNR information_nr = {};
if (!userLocationInformation->getInformation(information_nr)) return false; if (!userLocationInformation.value().getInformation(information_nr))
return false;
if (userLocationInformation->getChoiceOfUserLocationInformation() != if (userLocationInformation.value().getChoiceOfUserLocationInformation() !=
Ngap_UserLocationInformation_PR_userLocationInformationNR) Ngap_UserLocationInformation_PR_userLocationInformationNR)
return false; return false;
NR_CGI nR_CGI = {}; NR_CGI nR_CGI = {};
...@@ -297,12 +296,10 @@ bool PduSessionResourceReleaseResponseMsg::decodeFromPdu( ...@@ -297,12 +296,10 @@ bool PduSessionResourceReleaseResponseMsg::decodeFromPdu(
pduSessionResourceReleaseResponseIEs->protocolIEs.list.array[i] pduSessionResourceReleaseResponseIEs->protocolIEs.list.array[i]
->value.present == ->value.present ==
Ngap_PDUSessionResourceReleaseResponseIEs__value_PR_PDUSessionResourceReleasedListRelRes) { Ngap_PDUSessionResourceReleaseResponseIEs__value_PR_PDUSessionResourceReleasedListRelRes) {
if (!pduSessionResourceReleasedList if (!pduSessionResourceReleasedList.decode(
.decodefromPDUSessionResourceReleasedListRelRes( pduSessionResourceReleaseResponseIEs->protocolIEs.list
&pduSessionResourceReleaseResponseIEs->protocolIEs.list .array[i]
.array[i] ->value.choice.PDUSessionResourceReleasedListRelRes)) {
->value.choice
.PDUSessionResourceReleasedListRelRes)) {
Logger::nas_mm().warn( Logger::nas_mm().warn(
"Decoded NGAP PDUSessionResourceReleasedListRelRes IE error"); "Decoded NGAP PDUSessionResourceReleasedListRelRes IE error");
return false; return false;
......
...@@ -53,8 +53,8 @@ class PduSessionResourceReleaseResponseMsg : public NgapUEMessage { ...@@ -53,8 +53,8 @@ class PduSessionResourceReleaseResponseMsg : public NgapUEMessage {
pduSessionResourceReleaseResponseIEs; pduSessionResourceReleaseResponseIEs;
PDUSessionResourceReleasedListRelRes PDUSessionResourceReleasedListRelRes
pduSessionResourceReleasedList; // Mandatory pduSessionResourceReleasedList; // Mandatory
UserLocationInformation* userLocationInformation; // Optional std::optional<UserLocationInformation> userLocationInformation; // Optional
// TODO: CriticalityDiagnostics *criticalityDiagnostics; //Optional // TODO: CriticalityDiagnostics *criticalityDiagnostics; //Optional
}; };
......
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