Commit 5ff8b7f4 authored by Tien-Thinh Nguyen's avatar Tien-Thinh Nguyen

Code cleanup API server

parent 40faab75
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
#include "IndividualPDUSessionHSMFApi.h"
......@@ -38,77 +39,76 @@ void IndividualPDUSessionHSMFApi::setupRoutes() {
Routes::Post(
*router,
base + smf_cfg.sbi_api_version + "/pdu-sessions/:pduSessionRef/release",
Routes::bind(&IndividualPDUSessionHSMFApi::release_pdu_session_handler,
this));
Routes::bind(
&IndividualPDUSessionHSMFApi::release_pdu_session_handler, this));
Routes::Post(
*router,
base + smf_cfg.sbi_api_version + "/pdu-sessions/:pduSessionRef/modify",
Routes::bind(&IndividualPDUSessionHSMFApi::update_pdu_session_handler,
this));
Routes::bind(
&IndividualPDUSessionHSMFApi::update_pdu_session_handler, this));
// Default handler, called when a route is not found
router->addCustomHandler(
Routes::bind(
&IndividualPDUSessionHSMFApi::individual_pdu_session_hsmf_api_default_handler,
this));
router->addCustomHandler(Routes::bind(
&IndividualPDUSessionHSMFApi::
individual_pdu_session_hsmf_api_default_handler,
this));
}
void IndividualPDUSessionHSMFApi::release_pdu_session_handler(
const Pistache::Rest::Request &request,
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response) {
// Getting the path params
auto pduSessionRef = request.param(":pduSessionRef").as<std::string>();
// Getting the body param
ReleaseData releaseData = { };
ReleaseData releaseData = {};
try {
nlohmann::json::parse(request.body()).get_to(releaseData);
this->release_pdu_session(pduSessionRef, releaseData, response);
} catch (nlohmann::detail::exception &e) {
//send a 400 error
} catch (nlohmann::detail::exception& e) {
// send a 400 error
response.send(Pistache::Http::Code::Bad_Request, e.what());
return;
} catch (std::exception &e) {
//send a 500 error
} catch (std::exception& e) {
// send a 500 error
response.send(Pistache::Http::Code::Internal_Server_Error, e.what());
return;
}
}
void IndividualPDUSessionHSMFApi::update_pdu_session_handler(
const Pistache::Rest::Request &request,
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response) {
// Getting the path params
auto pduSessionRef = request.param(":pduSessionRef").as<std::string>();
// Getting the body param
HsmfUpdateData hsmfUpdateData = { };
HsmfUpdateData hsmfUpdateData = {};
try {
nlohmann::json::parse(request.body()).get_to(hsmfUpdateData);
this->update_pdu_session(pduSessionRef, hsmfUpdateData, response);
} catch (nlohmann::detail::exception &e) {
//send a 400 error
} catch (nlohmann::detail::exception& e) {
// send a 400 error
response.send(Pistache::Http::Code::Bad_Request, e.what());
return;
} catch (std::exception &e) {
//send a 500 error
} catch (std::exception& e) {
// send a 500 error
response.send(Pistache::Http::Code::Internal_Server_Error, e.what());
return;
}
}
void IndividualPDUSessionHSMFApi::individual_pdu_session_hsmf_api_default_handler(
const Pistache::Rest::Request&, Pistache::Http::ResponseWriter response) {
response.send(Pistache::Http::Code::Not_Found,
"The requested method does not exist");
}
}
}
void IndividualPDUSessionHSMFApi::
individual_pdu_session_hsmf_api_default_handler(
const Pistache::Rest::Request&,
Pistache::Http::ResponseWriter response) {
response.send(
Pistache::Http::Code::Not_Found, "The requested method does not exist");
}
} // namespace api
} // namespace smf_server
} // namespace oai
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
* IndividualPDUSessionHSMFApi.h
*
*
*
*/
#ifndef IndividualPDUSessionHSMFApi_H_
......@@ -39,8 +41,7 @@ using namespace oai::smf_server::model;
class IndividualPDUSessionHSMFApi {
public:
IndividualPDUSessionHSMFApi(std::shared_ptr<Pistache::Rest::Router>);
virtual ~IndividualPDUSessionHSMFApi() {
}
virtual ~IndividualPDUSessionHSMFApi() {}
void init();
const std::string base = "/nsmf-pdusession/";
......@@ -48,12 +49,14 @@ class IndividualPDUSessionHSMFApi {
private:
void setupRoutes();
void release_pdu_session_handler(const Pistache::Rest::Request &request,
Pistache::Http::ResponseWriter response);
void update_pdu_session_handler(const Pistache::Rest::Request &request,
Pistache::Http::ResponseWriter response);
void release_pdu_session_handler(
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response);
void update_pdu_session_handler(
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response);
void individual_pdu_session_hsmf_api_default_handler(
const Pistache::Rest::Request &request,
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response);
std::shared_ptr<Pistache::Rest::Router> router;
......@@ -65,10 +68,11 @@ class IndividualPDUSessionHSMFApi {
///
/// </remarks>
/// <param name="pduSessionRef">PDU session reference</param>
/// <param name="releaseData">representation of the data to be sent to H-SMF when releasing the PDU session (optional)</param>
/// <param name="releaseData">representation of the data to be sent to H-SMF
/// when releasing the PDU session (optional)</param>
virtual void release_pdu_session(
const std::string &pduSessionRef, const ReleaseData &releaseData,
Pistache::Http::ResponseWriter &response) = 0;
const std::string& pduSessionRef, const ReleaseData& releaseData,
Pistache::Http::ResponseWriter& response) = 0;
/// <summary>
/// Update (initiated by V-SMF)
......@@ -77,16 +81,15 @@ class IndividualPDUSessionHSMFApi {
///
/// </remarks>
/// <param name="pduSessionRef">PDU session reference</param>
/// <param name="hsmfUpdateData">representation of the updates to apply to the PDU session</param>
virtual void update_pdu_session(const std::string &pduSessionRef,
const HsmfUpdateData &hsmfUpdateData,
Pistache::Http::ResponseWriter &response) = 0;
/// <param name="hsmfUpdateData">representation of the updates to apply to the
/// PDU session</param>
virtual void update_pdu_session(
const std::string& pduSessionRef, const HsmfUpdateData& hsmfUpdateData,
Pistache::Http::ResponseWriter& response) = 0;
};
}
}
}
} // namespace api
} // namespace smf_server
} // namespace oai
#endif /* IndividualPDUSessionHSMFApi_H_ */
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
......@@ -15,9 +16,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (the "License"); you may not use this
*file except in compliance with the License. You may obtain a copy of the
*License at
*
* http://www.openairinterface.org/?page_id=698
*
......@@ -68,50 +69,51 @@ void IndividualSMContextApi::setupRoutes() {
using namespace Pistache::Rest;
Routes::Post(
*router, base + smf_cfg.sbi_api_version + "/sm-contexts/:smContextRef/release",
*router,
base + smf_cfg.sbi_api_version + "/sm-contexts/:smContextRef/release",
Routes::bind(&IndividualSMContextApi::release_sm_context_handler, this));
Routes::Post(
*router, base + smf_cfg.sbi_api_version + "/sm-contexts/:smContextRef/retrieve",
*router,
base + smf_cfg.sbi_api_version + "/sm-contexts/:smContextRef/retrieve",
Routes::bind(&IndividualSMContextApi::retrieve_sm_context_handler, this));
Routes::Post(
*router, base + smf_cfg.sbi_api_version + "/sm-contexts/:smContextRef/modify",
*router,
base + smf_cfg.sbi_api_version + "/sm-contexts/:smContextRef/modify",
Routes::bind(&IndividualSMContextApi::update_sm_context_handler, this));
// Default handler, called when a route is not found
router->addCustomHandler(
Routes::bind(
&IndividualSMContextApi::individual_sm_context_api_default_handler,
this));
router->addCustomHandler(Routes::bind(
&IndividualSMContextApi::individual_sm_context_api_default_handler,
this));
}
void IndividualSMContextApi::release_sm_context_handler(
const Pistache::Rest::Request &request,
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response) {
Logger::smf_api_server().debug("");
Logger::smf_api_server().info(
"Received a SM context Release request from AMF.");
Logger::smf_api_server().debug("Request body: %s\n", request.body().c_str());
SmContextReleaseMessage smContextReleaseMessage = { };
SmContextReleaseMessage smContextReleaseMessage = {};
//simple parser
mime_parser sp = { };
// simple parser
mime_parser sp = {};
sp.parse(request.body());
std::vector<mime_part> parts = { };
std::vector<mime_part> parts = {};
sp.get_mime_parts(parts);
uint8_t size = parts.size();
Logger::smf_api_server().debug("Number of MIME parts %d", size);
// Getting the body param
SmContextReleaseData smContextReleaseData = { };
SmContextReleaseData smContextReleaseData = {};
try {
if (size > 0) {
nlohmann::json::parse(parts[0].body.c_str()).get_to(smContextReleaseData);
} else {
nlohmann::json::parse(request.body().c_str()).get_to(
smContextReleaseData);
nlohmann::json::parse(request.body().c_str())
.get_to(smContextReleaseData);
}
smContextReleaseMessage.setJsonData(smContextReleaseData);
......@@ -127,68 +129,66 @@ void IndividualSMContextApi::release_sm_context_handler(
auto smContextRef = request.param(":smContextRef").as<std::string>();
this->release_sm_context(smContextRef, smContextReleaseMessage, response);
} catch (nlohmann::detail::exception &e) {
//send a 400 error
} catch (nlohmann::detail::exception& e) {
// send a 400 error
Logger::smf_api_server().warn(
"Error in parsing json (error: %s), send a msg with a 400 error code to AMF",
"Error in parsing json (error: %s), send a msg with a 400 error code "
"to AMF",
e.what());
response.send(Pistache::Http::Code::Bad_Request, e.what());
return;
} catch (std::exception &e) {
//send a 500 error
} catch (std::exception& e) {
// send a 500 error
Logger::smf_api_server().warn(
"Error (%s ), send a msg with a 500 error code to AMF", e.what());
response.send(Pistache::Http::Code::Internal_Server_Error, e.what());
return;
}
}
void IndividualSMContextApi::retrieve_sm_context_handler(
const Pistache::Rest::Request &request,
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response) {
// Getting the path params
auto smContextRef = request.param(":smContextRef").as<std::string>();
// Getting the body param
SmContextRetrieveData smContextRetrieveData = { };
SmContextRetrieveData smContextRetrieveData = {};
try {
nlohmann::json::parse(request.body()).get_to(smContextRetrieveData);
this->retrieve_sm_context(smContextRef, smContextRetrieveData, response);
} catch (nlohmann::detail::exception &e) {
//send a 400 error
} catch (nlohmann::detail::exception& e) {
// send a 400 error
response.send(Pistache::Http::Code::Bad_Request, e.what());
return;
} catch (std::exception &e) {
//send a 500 error
} catch (std::exception& e) {
// send a 500 error
response.send(Pistache::Http::Code::Internal_Server_Error, e.what());
return;
}
}
void IndividualSMContextApi::update_sm_context_handler(
const Pistache::Rest::Request &request,
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response) {
Logger::smf_api_server().debug("");
Logger::smf_api_server().info(
"Received a SM context update request from AMF.");
Logger::smf_api_server().debug("Request body: %s\n", request.body().c_str());
SmContextUpdateMessage smContextUpdateMessage = { };
SmContextUpdateMessage smContextUpdateMessage = {};
//simple parser
mime_parser sp = { };
// simple parser
mime_parser sp = {};
sp.parse(request.body());
std::vector<mime_part> parts = { };
std::vector<mime_part> parts = {};
sp.get_mime_parts(parts);
uint8_t size = parts.size();
Logger::smf_api_server().debug("Number of MIME parts %d", size);
// Getting the body param
SmContextUpdateData smContextUpdateData = { };
SmContextUpdateData smContextUpdateData = {};
try {
if (size > 0) {
nlohmann::json::parse(parts[0].body.c_str()).get_to(smContextUpdateData);
......@@ -202,8 +202,8 @@ void IndividualSMContextApi::update_sm_context_handler(
if (parts[i].content_type.compare("application/vnd.3gpp.5gnas") == 0) {
smContextUpdateMessage.setBinaryDataN1SmMessage(parts[i].body);
Logger::smf_api_server().debug("N1 SM message is set");
} else if (parts[i].content_type.compare("application/vnd.3gpp.ngap")
== 0) {
} else if (
parts[i].content_type.compare("application/vnd.3gpp.ngap") == 0) {
smContextUpdateMessage.setBinaryDataN2SmInformation(parts[i].body);
Logger::smf_api_server().debug("N2 SM information is set");
}
......@@ -213,15 +213,16 @@ void IndividualSMContextApi::update_sm_context_handler(
auto smContextRef = request.param(":smContextRef").as<std::string>();
this->update_sm_context(smContextRef, smContextUpdateMessage, response);
} catch (nlohmann::detail::exception &e) {
//send a 400 error
} catch (nlohmann::detail::exception& e) {
// send a 400 error
Logger::smf_api_server().warn(
"Error in parsing json (error: %s), send a msg with a 400 error code to AMF",
"Error in parsing json (error: %s), send a msg with a 400 error code "
"to AMF",
e.what());
response.send(Pistache::Http::Code::Bad_Request, e.what());
return;
} catch (std::exception &e) {
//send a 500 error
} catch (std::exception& e) {
// send a 500 error
Logger::smf_api_server().warn(
"Error (%s ), send a msg with a 500 error code to AMF", e.what());
response.send(Pistache::Http::Code::Internal_Server_Error, e.what());
......@@ -231,11 +232,10 @@ void IndividualSMContextApi::update_sm_context_handler(
void IndividualSMContextApi::individual_sm_context_api_default_handler(
const Pistache::Rest::Request&, Pistache::Http::ResponseWriter response) {
response.send(Pistache::Http::Code::Not_Found,
"The requested method does not exist");
}
}
}
response.send(
Pistache::Http::Code::Not_Found, "The requested method does not exist");
}
} // namespace api
} // namespace smf_server
} // namespace oai
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/*
* IndividualSMContextApi.h
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
......@@ -20,9 +16,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (the "License"); you may not use this
*file except in compliance with the License. You may obtain a copy of the
*License at
*
* http://www.openairinterface.org/?page_id=698
*
......@@ -36,6 +32,12 @@
* contact@openairinterface.org
*/
/*
* IndividualSMContextApi.h
*
*
*/
#ifndef IndividualSMContextApi_H_
#define IndividualSMContextApi_H_
......@@ -67,8 +69,7 @@ using namespace oai::smf_server::model;
class IndividualSMContextApi {
public:
IndividualSMContextApi(std::shared_ptr<Pistache::Rest::Router>);
virtual ~IndividualSMContextApi() {
}
virtual ~IndividualSMContextApi() {}
void init();
const std::string base = "/nsmf-pdusession/";
......@@ -76,14 +77,17 @@ class IndividualSMContextApi {
private:
void setupRoutes();
void release_sm_context_handler(const Pistache::Rest::Request &request,
Pistache::Http::ResponseWriter response);
void retrieve_sm_context_handler(const Pistache::Rest::Request &request,
Pistache::Http::ResponseWriter response);
void update_sm_context_handler(const Pistache::Rest::Request &request,
Pistache::Http::ResponseWriter response);
void release_sm_context_handler(
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response);
void retrieve_sm_context_handler(
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response);
void update_sm_context_handler(
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response);
void individual_sm_context_api_default_handler(
const Pistache::Rest::Request &request,
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response);
std::shared_ptr<Pistache::Rest::Router> router;
......@@ -95,11 +99,12 @@ class IndividualSMContextApi {
///
/// </remarks>
/// <param name="smContextRef">SM context reference</param>
/// <param name="smContextReleaseData">representation of the data to be sent to the SMF when releasing the SM context (optional)</param>
/// <param name="smContextReleaseData">representation of the data to be sent
/// to the SMF when releasing the SM context (optional)</param>
virtual void release_sm_context(
const std::string &smContextRef,
const SmContextReleaseMessage &smContextReleaseMessage,
Pistache::Http::ResponseWriter &response) = 0;
const std::string& smContextRef,
const SmContextReleaseMessage& smContextReleaseMessage,
Pistache::Http::ResponseWriter& response) = 0;
/// <summary>
/// Retrieve SM Context
......@@ -108,11 +113,12 @@ class IndividualSMContextApi {
///
/// </remarks>
/// <param name="smContextRef">SM context reference</param>
/// <param name="smContextRetrieveData">parameters used to retrieve the SM context (optional)</param>
/// <param name="smContextRetrieveData">parameters used to retrieve the SM
/// context (optional)</param>
virtual void retrieve_sm_context(
const std::string &smContextRef,
const SmContextRetrieveData &smContextRetrieveData,
Pistache::Http::ResponseWriter &response) = 0;
const std::string& smContextRef,
const SmContextRetrieveData& smContextRetrieveData,
Pistache::Http::ResponseWriter& response) = 0;
/// <summary>
/// Update SM Context
......@@ -121,17 +127,16 @@ class IndividualSMContextApi {
///
/// </remarks>
/// <param name="smContextRef">SM context reference</param>
/// <param name="smContextUpdateData">representation of the updates to apply to the SM context</param>
/// <param name="smContextUpdateData">representation of the updates to apply
/// to the SM context</param>
virtual void update_sm_context(
const std::string &smContextRef,
const SmContextUpdateMessage &smContextUpdateMessage,
Pistache::Http::ResponseWriter &response) = 0;
const std::string& smContextRef,
const SmContextUpdateMessage& smContextUpdateMessage,
Pistache::Http::ResponseWriter& response) = 0;
};
}
}
}
} // namespace api
} // namespace smf_server
} // namespace oai
#endif /* IndividualSMContextApi_H_ */
/**
* Nsmf_EventExposure
* Session Management Event Exposure Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
* Nsmf_EventExposure
* Session Management Event Exposure Service. © 2019, 3GPP Organizational
* Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
#include "IndividualSubscriptionDocumentApi.h"
#include "Helpers.h"
......@@ -23,96 +24,121 @@ namespace api {
using namespace oai::smf_server::helpers;
using namespace oai::smf_server::model;
IndividualSubscriptionDocumentApi::IndividualSubscriptionDocumentApi(std::shared_ptr<Pistache::Rest::Router> rtr) {
router = rtr;
IndividualSubscriptionDocumentApi::IndividualSubscriptionDocumentApi(
std::shared_ptr<Pistache::Rest::Router> rtr) {
router = rtr;
}
void IndividualSubscriptionDocumentApi::init() {
setupRoutes();
setupRoutes();
}
void IndividualSubscriptionDocumentApi::setupRoutes() {
using namespace Pistache::Rest;
Routes::Delete(*router, base + smf_cfg.sbi_api_version + "/subscriptions/:subId", Routes::bind(&IndividualSubscriptionDocumentApi::delete_individual_subcription_handler, this));
Routes::Get(*router, base + smf_cfg.sbi_api_version + "/subscriptions/:subId", Routes::bind(&IndividualSubscriptionDocumentApi::get_individual_subcription_handler, this));
Routes::Put(*router, base + smf_cfg.sbi_api_version + "/subscriptions/:subId", Routes::bind(&IndividualSubscriptionDocumentApi::replace_individual_subcription_handler, this));
// Default handler, called when a route is not found
router->addCustomHandler(Routes::bind(&IndividualSubscriptionDocumentApi::individual_subscription_document_api_default_handler, this));
using namespace Pistache::Rest;
Routes::Delete(
*router, base + smf_cfg.sbi_api_version + "/subscriptions/:subId",
Routes::bind(
&IndividualSubscriptionDocumentApi::
delete_individual_subcription_handler,
this));
Routes::Get(
*router, base + smf_cfg.sbi_api_version + "/subscriptions/:subId",
Routes::bind(
&IndividualSubscriptionDocumentApi::
get_individual_subcription_handler,
this));
Routes::Put(
*router, base + smf_cfg.sbi_api_version + "/subscriptions/:subId",
Routes::bind(
&IndividualSubscriptionDocumentApi::
replace_individual_subcription_handler,
this));
// Default handler, called when a route is not found
router->addCustomHandler(Routes::bind(
&IndividualSubscriptionDocumentApi::
individual_subscription_document_api_default_handler,
this));
}
void IndividualSubscriptionDocumentApi::delete_individual_subcription_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response) {
// Getting the path params
auto subId = request.param(":subId").as<std::string>();
try {
this->delete_individual_subcription(subId, response);
} catch (nlohmann::detail::exception &e) {
//send a 400 error
response.send(Pistache::Http::Code::Bad_Request, e.what());
return;
} catch (Pistache::Http::HttpError &e) {
response.send(static_cast<Pistache::Http::Code>(e.code()), e.what());
return;
} catch (std::exception &e) {
//send a 500 error
response.send(Pistache::Http::Code::Internal_Server_Error, e.what());
return;
}
void IndividualSubscriptionDocumentApi::delete_individual_subcription_handler(
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response) {
// Getting the path params
auto subId = request.param(":subId").as<std::string>();
try {
this->delete_individual_subcription(subId, response);
} catch (nlohmann::detail::exception& e) {
// send a 400 error
response.send(Pistache::Http::Code::Bad_Request, e.what());
return;
} catch (Pistache::Http::HttpError& e) {
response.send(static_cast<Pistache::Http::Code>(e.code()), e.what());
return;
} catch (std::exception& e) {
// send a 500 error
response.send(Pistache::Http::Code::Internal_Server_Error, e.what());
return;
}
}
void IndividualSubscriptionDocumentApi::get_individual_subcription_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response) {
// Getting the path params
auto subId = request.param(":subId").as<std::string>();
try {
this->get_individual_subcription(subId, response);
} catch (nlohmann::detail::exception &e) {
//send a 400 error
response.send(Pistache::Http::Code::Bad_Request, e.what());
return;
} catch (Pistache::Http::HttpError &e) {
response.send(static_cast<Pistache::Http::Code>(e.code()), e.what());
return;
} catch (std::exception &e) {
//send a 500 error
response.send(Pistache::Http::Code::Internal_Server_Error, e.what());
return;
}
void IndividualSubscriptionDocumentApi::get_individual_subcription_handler(
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response) {
// Getting the path params
auto subId = request.param(":subId").as<std::string>();
try {
this->get_individual_subcription(subId, response);
} catch (nlohmann::detail::exception& e) {
// send a 400 error
response.send(Pistache::Http::Code::Bad_Request, e.what());
return;
} catch (Pistache::Http::HttpError& e) {
response.send(static_cast<Pistache::Http::Code>(e.code()), e.what());
return;
} catch (std::exception& e) {
// send a 500 error
response.send(Pistache::Http::Code::Internal_Server_Error, e.what());
return;
}
}
void IndividualSubscriptionDocumentApi::replace_individual_subcription_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response) {
// Getting the path params
auto subId = request.param(":subId").as<std::string>();
// Getting the body param
NsmfEventExposure nsmfEventExposure;
try {
nlohmann::json::parse(request.body()).get_to(nsmfEventExposure);
this->replace_individual_subcription(subId, nsmfEventExposure, response);
} catch (nlohmann::detail::exception &e) {
//send a 400 error
response.send(Pistache::Http::Code::Bad_Request, e.what());
return;
} catch (Pistache::Http::HttpError &e) {
response.send(static_cast<Pistache::Http::Code>(e.code()), e.what());
return;
} catch (std::exception &e) {
//send a 500 error
response.send(Pistache::Http::Code::Internal_Server_Error, e.what());
return;
}
void IndividualSubscriptionDocumentApi::replace_individual_subcription_handler(
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response) {
// Getting the path params
auto subId = request.param(":subId").as<std::string>();
// Getting the body param
NsmfEventExposure nsmfEventExposure;
try {
nlohmann::json::parse(request.body()).get_to(nsmfEventExposure);
this->replace_individual_subcription(subId, nsmfEventExposure, response);
} catch (nlohmann::detail::exception& e) {
// send a 400 error
response.send(Pistache::Http::Code::Bad_Request, e.what());
return;
} catch (Pistache::Http::HttpError& e) {
response.send(static_cast<Pistache::Http::Code>(e.code()), e.what());
return;
} catch (std::exception& e) {
// send a 500 error
response.send(Pistache::Http::Code::Internal_Server_Error, e.what());
return;
}
}
void IndividualSubscriptionDocumentApi::individual_subscription_document_api_default_handler(const Pistache::Rest::Request &, Pistache::Http::ResponseWriter response) {
response.send(Pistache::Http::Code::Not_Found, "The requested method does not exist");
}
}
}
void IndividualSubscriptionDocumentApi::
individual_subscription_document_api_default_handler(
const Pistache::Rest::Request&,
Pistache::Http::ResponseWriter response) {
response.send(
Pistache::Http::Code::Not_Found, "The requested method does not exist");
}
} // namespace api
} // namespace smf_server
} // namespace oai
/**
* Nsmf_EventExposure
* Session Management Event Exposure Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
* Nsmf_EventExposure
* Session Management Event Exposure Service. © 2019, 3GPP Organizational
* Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
* IndividualSubscriptionDocumentApi.h
*
*
*
*/
#ifndef IndividualSubscriptionDocumentApi_H_
#define IndividualSubscriptionDocumentApi_H_
#include <pistache/http.h>
#include <pistache/router.h>
#include <pistache/http_headers.h>
#include <pistache/optional.h>
#include "NsmfEventExposure.h"
#include "ProblemDetails.h"
#include <string>
......@@ -35,57 +35,67 @@ namespace api {
using namespace oai::smf_server::model;
class IndividualSubscriptionDocumentApi {
public:
IndividualSubscriptionDocumentApi(std::shared_ptr<Pistache::Rest::Router>);
virtual ~IndividualSubscriptionDocumentApi() {}
void init();
const std::string base = "/nsmf_event-exposure/";
private:
void setupRoutes();
void delete_individual_subcription_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void get_individual_subcription_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void replace_individual_subcription_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void individual_subscription_document_api_default_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
std::shared_ptr<Pistache::Rest::Router> router;
/// <summary>
/// Delete an individual subscription for event notifications from the SMF
/// </summary>
/// <remarks>
///
/// </remarks>
/// <param name="subId">Event Subscription ID</param>
virtual void delete_individual_subcription(const std::string &subId, Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Read an individual subscription for event notifications from the SMF
/// </summary>
/// <remarks>
///
/// </remarks>
/// <param name="subId">Event Subscription ID</param>
virtual void get_individual_subcription(const std::string &subId, Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Replace an individual subscription for event notifications from the SMF
/// </summary>
/// <remarks>
///
/// </remarks>
/// <param name="subId">Event Subscription ID</param>
/// <param name="nsmfEventExposure"></param>
virtual void replace_individual_subcription(const std::string &subId, const NsmfEventExposure &nsmfEventExposure, Pistache::Http::ResponseWriter &response) = 0;
class IndividualSubscriptionDocumentApi {
public:
IndividualSubscriptionDocumentApi(std::shared_ptr<Pistache::Rest::Router>);
virtual ~IndividualSubscriptionDocumentApi() {}
void init();
const std::string base = "/nsmf_event-exposure/";
private:
void setupRoutes();
void delete_individual_subcription_handler(
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response);
void get_individual_subcription_handler(
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response);
void replace_individual_subcription_handler(
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response);
void individual_subscription_document_api_default_handler(
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response);
std::shared_ptr<Pistache::Rest::Router> router;
/// <summary>
/// Delete an individual subscription for event notifications from the SMF
/// </summary>
/// <remarks>
///
/// </remarks>
/// <param name="subId">Event Subscription ID</param>
virtual void delete_individual_subcription(
const std::string& subId, Pistache::Http::ResponseWriter& response) = 0;
/// <summary>
/// Read an individual subscription for event notifications from the SMF
/// </summary>
/// <remarks>
///
/// </remarks>
/// <param name="subId">Event Subscription ID</param>
virtual void get_individual_subcription(
const std::string& subId, Pistache::Http::ResponseWriter& response) = 0;
/// <summary>
/// Replace an individual subscription for event notifications from the SMF
/// </summary>
/// <remarks>
///
/// </remarks>
/// <param name="subId">Event Subscription ID</param>
/// <param name="nsmfEventExposure"></param>
virtual void replace_individual_subcription(
const std::string& subId, const NsmfEventExposure& nsmfEventExposure,
Pistache::Http::ResponseWriter& response) = 0;
};
}
}
}
} // namespace api
} // namespace smf_server
} // namespace oai
#endif /* IndividualSubscriptionDocumentApi_H_ */
/**
* Nsmf_EventExposure
* Session Management Event Exposure Service. © 2019, 3GPP Organizational
* Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the
* License at
*
* The version of the OpenAPI document: 1.1.0.alpha-1
* http://www.openairinterface.org/?page_id=698
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#include "NFStatusNotifyApi.h"
......
/**
* Nsmf_EventExposure
* Session Management Event Exposure Service. © 2019, 3GPP Organizational
* Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the
* License at
*
* http://www.openairinterface.org/?page_id=698
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*
* NFStatusNotifyApi.h
*
......
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
#include "PDUSessionsCollectionApi.h"
......@@ -40,16 +41,14 @@ void PDUSessionsCollectionApi::setupRoutes() {
Routes::bind(&PDUSessionsCollectionApi::post_pdu_sessions_handler, this));
// Default handler, called when a route is not found
router->addCustomHandler(
Routes::bind(
&PDUSessionsCollectionApi::pdu_sessions_collection_api_default_handler,
this));
router->addCustomHandler(Routes::bind(
&PDUSessionsCollectionApi::pdu_sessions_collection_api_default_handler,
this));
}
void PDUSessionsCollectionApi::post_pdu_sessions_handler(
const Pistache::Rest::Request &request,
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response) {
// Getting the body param
PduSessionCreateData pduSessionCreateData;
......@@ -57,25 +56,23 @@ void PDUSessionsCollectionApi::post_pdu_sessions_handler(
try {
nlohmann::json::parse(request.body()).get_to(pduSessionCreateData);
this->post_pdu_sessions(pduSessionCreateData, response);
} catch (nlohmann::detail::exception &e) {
//send a 400 error
} catch (nlohmann::detail::exception& e) {
// send a 400 error
response.send(Pistache::Http::Code::Bad_Request, e.what());
return;
} catch (std::exception &e) {
//send a 500 error
} catch (std::exception& e) {
// send a 500 error
response.send(Pistache::Http::Code::Internal_Server_Error, e.what());
return;
}
}
void PDUSessionsCollectionApi::pdu_sessions_collection_api_default_handler(
const Pistache::Rest::Request&, Pistache::Http::ResponseWriter response) {
response.send(Pistache::Http::Code::Not_Found,
"The requested method does not exist");
}
}
}
response.send(
Pistache::Http::Code::Not_Found, "The requested method does not exist");
}
} // namespace api
} // namespace smf_server
} // namespace oai
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
* PDUSessionsCollectionApi.h
*
*
*
*/
#ifndef PDUSessionsCollectionApi_H_
......@@ -37,8 +39,7 @@ using namespace oai::smf_server::model;
class PDUSessionsCollectionApi {
public:
PDUSessionsCollectionApi(std::shared_ptr<Pistache::Rest::Router>);
virtual ~PDUSessionsCollectionApi() {
}
virtual ~PDUSessionsCollectionApi() {}
void init();
const std::string base = "/nsmf-pdusession/";
......@@ -46,10 +47,11 @@ class PDUSessionsCollectionApi {
private:
void setupRoutes();
void post_pdu_sessions_handler(const Pistache::Rest::Request &request,
Pistache::Http::ResponseWriter response);
void post_pdu_sessions_handler(
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response);
void pdu_sessions_collection_api_default_handler(
const Pistache::Rest::Request &request,
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response);
std::shared_ptr<Pistache::Rest::Router> router;
......@@ -60,16 +62,15 @@ class PDUSessionsCollectionApi {
/// <remarks>
///
/// </remarks>
/// <param name="pduSessionCreateData">representation of the PDU session to be created in the H-SMF</param>
/// <param name="pduSessionCreateData">representation of the PDU session to be
/// created in the H-SMF</param>
virtual void post_pdu_sessions(
const PduSessionCreateData &pduSessionCreateData,
Pistache::Http::ResponseWriter &response) = 0;
const PduSessionCreateData& pduSessionCreateData,
Pistache::Http::ResponseWriter& response) = 0;
};
}
}
}
} // namespace api
} // namespace smf_server
} // namespace oai
#endif /* PDUSessionsCollectionApi_H_ */
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
......@@ -15,9 +16,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the
* License at
*
* http://www.openairinterface.org/?page_id=698
*
......@@ -72,41 +73,39 @@ void SMContextsCollectionApi::setupRoutes() {
Routes::bind(&SMContextsCollectionApi::post_sm_contexts_handler, this));
// Default handler, called when a route is not found
router->addCustomHandler(
Routes::bind(
&SMContextsCollectionApi::sm_contexts_collection_api_default_handler,
this));
router->addCustomHandler(Routes::bind(
&SMContextsCollectionApi::sm_contexts_collection_api_default_handler,
this));
}
void SMContextsCollectionApi::post_sm_contexts_handler(
const Pistache::Rest::Request &request,
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response) {
Logger::smf_api_server().debug("");
Logger::smf_api_server().info(
"Received a SM context create request from AMF.");
SmContextMessage smContextMessage = { };
SmContextCreateData smContextCreateData = { };
SmContextMessage smContextMessage = {};
SmContextCreateData smContextCreateData = {};
//simple parser
mime_parser sp = { };
// simple parser
mime_parser sp = {};
sp.parse(request.body());
std::vector<mime_part> parts = { };
std::vector<mime_part> parts = {};
sp.get_mime_parts(parts);
uint8_t size = parts.size();
Logger::smf_api_server().debug("Number of MIME parts %d", size);
//at least 2 parts for Json data and N1 (+ N2)
// at least 2 parts for Json data and N1 (+ N2)
if (size < 2) {
response.send(Pistache::Http::Code::Bad_Request);
return;
}
//step 2. process the request
// step 2. process the request
try {
nlohmann::json::parse(parts[0].body.c_str()).get_to(smContextCreateData);
smContextMessage.setJsonData(smContextCreateData);
//must include N1 NAS msg
// must include N1 NAS msg
if (parts[1].content_type.compare("application/vnd.3gpp.5gnas") == 0) {
smContextMessage.setBinaryDataN1SmMessage(parts[1].body);
} else {
......@@ -116,14 +115,14 @@ void SMContextsCollectionApi::post_sm_contexts_handler(
this->post_sm_contexts(smContextMessage, response);
} catch (nlohmann::detail::exception &e) {
//send a 400 error
Logger::smf_api_server().warn("Can not parse the json data (error: %s)!",
e.what());
} catch (nlohmann::detail::exception& e) {
// send a 400 error
Logger::smf_api_server().warn(
"Can not parse the json data (error: %s)!", e.what());
response.send(Pistache::Http::Code::Bad_Request, e.what());
return;
} catch (std::exception &e) {
//send a 500 error
} catch (std::exception& e) {
// send a 500 error
Logger::smf_api_server().warn("Error: %s!", e.what());
response.send(Pistache::Http::Code::Internal_Server_Error, e.what());
return;
......@@ -132,11 +131,10 @@ void SMContextsCollectionApi::post_sm_contexts_handler(
void SMContextsCollectionApi::sm_contexts_collection_api_default_handler(
const Pistache::Rest::Request&, Pistache::Http::ResponseWriter response) {
response.send(Pistache::Http::Code::Not_Found,
"The requested method does not exist");
}
}
}
response.send(
Pistache::Http::Code::Not_Found, "The requested method does not exist");
}
} // namespace api
} // namespace smf_server
} // namespace oai
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/*
* SMContextsCollectionApi.h
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
......@@ -20,9 +16,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the
* License at
*
* http://www.openairinterface.org/?page_id=698
*
......@@ -36,6 +32,12 @@
* contact@openairinterface.org
*/
/*
* SMContextsCollectionApi.h
*
*
*/
#ifndef SMContextsCollectionApi_H_
#define SMContextsCollectionApi_H_
......@@ -58,8 +60,7 @@ using namespace oai::smf_server::model;
class SMContextsCollectionApi {
public:
SMContextsCollectionApi(std::shared_ptr<Pistache::Rest::Router>);
virtual ~SMContextsCollectionApi() {
}
virtual ~SMContextsCollectionApi() {}
void init();
const std::string base = "/nsmf-pdusession/";
......@@ -67,10 +68,11 @@ class SMContextsCollectionApi {
private:
void setupRoutes();
void post_sm_contexts_handler(const Pistache::Rest::Request &request,
Pistache::Http::ResponseWriter response);
void post_sm_contexts_handler(
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response);
void sm_contexts_collection_api_default_handler(
const Pistache::Rest::Request &request,
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response);
std::shared_ptr<Pistache::Rest::Router> router;
......@@ -82,14 +84,13 @@ class SMContextsCollectionApi {
///
/// </remarks>
/// <param name="smContextMessage"></param>
virtual void post_sm_contexts(const SmContextMessage &smContextMessage,
Pistache::Http::ResponseWriter &response) = 0;
virtual void post_sm_contexts(
const SmContextMessage& smContextMessage,
Pistache::Http::ResponseWriter& response) = 0;
};
}
}
}
} // namespace api
} // namespace smf_server
} // namespace oai
#endif /* SMContextsCollectionApi_H_ */
/**
* Nsmf_EventExposure
* Session Management Event Exposure Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
* Nsmf_EventExposure
* Session Management Event Exposure Service. © 2019, 3GPP Organizational
* Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
#include "SubscriptionsCollectionApi.h"
#include "Helpers.h"
......@@ -23,52 +24,60 @@ namespace api {
using namespace oai::smf_server::helpers;
using namespace oai::smf_server::model;
SubscriptionsCollectionApi::SubscriptionsCollectionApi(std::shared_ptr<Pistache::Rest::Router> rtr) {
router = rtr;
SubscriptionsCollectionApi::SubscriptionsCollectionApi(
std::shared_ptr<Pistache::Rest::Router> rtr) {
router = rtr;
}
void SubscriptionsCollectionApi::init() {
setupRoutes();
setupRoutes();
}
void SubscriptionsCollectionApi::setupRoutes() {
using namespace Pistache::Rest;
using namespace Pistache::Rest;
Routes::Post(*router, base + smf_cfg.sbi_api_version + "/subscriptions", Routes::bind(&SubscriptionsCollectionApi::create_individual_subcription_handler, this));
Routes::Post(
*router, base + smf_cfg.sbi_api_version + "/subscriptions",
Routes::bind(
&SubscriptionsCollectionApi::create_individual_subcription_handler,
this));
// Default handler, called when a route is not found
router->addCustomHandler(Routes::bind(&SubscriptionsCollectionApi::subscriptions_collection_api_default_handler, this));
// Default handler, called when a route is not found
router->addCustomHandler(Routes::bind(
&SubscriptionsCollectionApi::subscriptions_collection_api_default_handler,
this));
}
void SubscriptionsCollectionApi::create_individual_subcription_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response) {
void SubscriptionsCollectionApi::create_individual_subcription_handler(
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response) {
// Getting the body param
// Getting the body param
NsmfEventExposure nsmfEventExposure;
try {
nlohmann::json::parse(request.body()).get_to(nsmfEventExposure);
this->create_individual_subcription(nsmfEventExposure, response);
} catch (nlohmann::detail::exception &e) {
//send a 400 error
response.send(Pistache::Http::Code::Bad_Request, e.what());
return;
} catch (Pistache::Http::HttpError &e) {
response.send(static_cast<Pistache::Http::Code>(e.code()), e.what());
return;
} catch (std::exception &e) {
//send a 500 error
response.send(Pistache::Http::Code::Internal_Server_Error, e.what());
return;
}
NsmfEventExposure nsmfEventExposure;
try {
nlohmann::json::parse(request.body()).get_to(nsmfEventExposure);
this->create_individual_subcription(nsmfEventExposure, response);
} catch (nlohmann::detail::exception& e) {
// send a 400 error
response.send(Pistache::Http::Code::Bad_Request, e.what());
return;
} catch (Pistache::Http::HttpError& e) {
response.send(static_cast<Pistache::Http::Code>(e.code()), e.what());
return;
} catch (std::exception& e) {
// send a 500 error
response.send(Pistache::Http::Code::Internal_Server_Error, e.what());
return;
}
}
void SubscriptionsCollectionApi::subscriptions_collection_api_default_handler(const Pistache::Rest::Request &, Pistache::Http::ResponseWriter response) {
response.send(Pistache::Http::Code::Not_Found, "The requested method does not exist");
}
}
}
void SubscriptionsCollectionApi::subscriptions_collection_api_default_handler(
const Pistache::Rest::Request&, Pistache::Http::ResponseWriter response) {
response.send(
Pistache::Http::Code::Not_Found, "The requested method does not exist");
}
} // namespace api
} // namespace smf_server
} // namespace oai
/**
* Nsmf_EventExposure
* Session Management Event Exposure Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
* Nsmf_EventExposure
* Session Management Event Exposure Service. © 2019, 3GPP Organizational
* Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
* SubscriptionsCollectionApi.h
*
*
*
*/
#ifndef SubscriptionsCollectionApi_H_
#define SubscriptionsCollectionApi_H_
#include <pistache/http.h>
#include <pistache/router.h>
#include <pistache/http_headers.h>
#include <pistache/optional.h>
#include "NsmfEventExposure.h"
#include "ProblemDetails.h"
......@@ -34,36 +34,40 @@ namespace api {
using namespace oai::smf_server::model;
class SubscriptionsCollectionApi {
public:
SubscriptionsCollectionApi(std::shared_ptr<Pistache::Rest::Router>);
virtual ~SubscriptionsCollectionApi() {}
void init();
const std::string base = "/nsmf_event-exposure/";
private:
void setupRoutes();
void create_individual_subcription_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void subscriptions_collection_api_default_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
std::shared_ptr<Pistache::Rest::Router> router;
/// <summary>
/// Create an individual subscription for event notifications from the SMF
/// </summary>
/// <remarks>
///
/// </remarks>
/// <param name="nsmfEventExposure"></param>
virtual void create_individual_subcription(const NsmfEventExposure &nsmfEventExposure, Pistache::Http::ResponseWriter &response) = 0;
class SubscriptionsCollectionApi {
public:
SubscriptionsCollectionApi(std::shared_ptr<Pistache::Rest::Router>);
virtual ~SubscriptionsCollectionApi() {}
void init();
const std::string base = "/nsmf_event-exposure/";
private:
void setupRoutes();
void create_individual_subcription_handler(
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response);
void subscriptions_collection_api_default_handler(
const Pistache::Rest::Request& request,
Pistache::Http::ResponseWriter response);
std::shared_ptr<Pistache::Rest::Router> router;
/// <summary>
/// Create an individual subscription for event notifications from the SMF
/// </summary>
/// <remarks>
///
/// </remarks>
/// <param name="nsmfEventExposure"></param>
virtual void create_individual_subcription(
const NsmfEventExposure& nsmfEventExposure,
Pistache::Http::ResponseWriter& response) = 0;
};
}
}
}
} // namespace api
} // namespace smf_server
} // namespace oai
#endif /* SubscriptionsCollectionApi_H_ */
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this
*file except in compliance with the License. You may obtain a copy of the
*License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#include "IndividualPDUSessionHSMFApiImpl.h"
......@@ -19,30 +41,29 @@ namespace api {
using namespace oai::smf_server::model;
IndividualPDUSessionHSMFApiImpl::IndividualPDUSessionHSMFApiImpl(
std::shared_ptr<Pistache::Rest::Router> rtr, smf::smf_app *smf_app_inst,
std::shared_ptr<Pistache::Rest::Router> rtr, smf::smf_app* smf_app_inst,
std::string address)
:
IndividualPDUSessionHSMFApi(rtr),
m_smf_app(smf_app_inst),
m_address(address) {
}
: IndividualPDUSessionHSMFApi(rtr),
m_smf_app(smf_app_inst),
m_address(address) {}
void IndividualPDUSessionHSMFApiImpl::release_pdu_session(
const std::string &pduSessionRef, const ReleaseData &releaseData,
Pistache::Http::ResponseWriter &response) {
const std::string& pduSessionRef, const ReleaseData& releaseData,
Pistache::Http::ResponseWriter& response) {
Logger::smf_api_server().info("release_pdu_session...");
response.send(Pistache::Http::Code::Not_Implemented,
"Release_pdu_session API has not been implemented yet!\n");
response.send(
Pistache::Http::Code::Not_Implemented,
"Release_pdu_session API has not been implemented yet!\n");
}
void IndividualPDUSessionHSMFApiImpl::update_pdu_session(
const std::string &pduSessionRef, const HsmfUpdateData &hsmfUpdateData,
Pistache::Http::ResponseWriter &response) {
const std::string& pduSessionRef, const HsmfUpdateData& hsmfUpdateData,
Pistache::Http::ResponseWriter& response) {
Logger::smf_api_server().info("update_pdu_session...");
response.send(Pistache::Http::Code::Not_Implemented,
"Update_pdu_session API has not been implemented yet!\n");
}
}
}
response.send(
Pistache::Http::Code::Not_Implemented,
"Update_pdu_session API has not been implemented yet!\n");
}
} // namespace api
} // namespace smf_server
} // namespace oai
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this
*file except in compliance with the License. You may obtain a copy of the
*License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*
......@@ -42,28 +64,28 @@ namespace api {
using namespace oai::smf_server::model;
class IndividualPDUSessionHSMFApiImpl :
public oai::smf_server::api::IndividualPDUSessionHSMFApi {
class IndividualPDUSessionHSMFApiImpl
: public oai::smf_server::api::IndividualPDUSessionHSMFApi {
public:
IndividualPDUSessionHSMFApiImpl(std::shared_ptr<Pistache::Rest::Router>,
smf::smf_app *smf_app_inst,
std::string address);
~IndividualPDUSessionHSMFApiImpl() {
}
IndividualPDUSessionHSMFApiImpl(
std::shared_ptr<Pistache::Rest::Router>, smf::smf_app* smf_app_inst,
std::string address);
~IndividualPDUSessionHSMFApiImpl() {}
void release_pdu_session(
const std::string& pduSessionRef, const ReleaseData& releaseData,
Pistache::Http::ResponseWriter& response);
void update_pdu_session(
const std::string& pduSessionRef, const HsmfUpdateData& hsmfUpdateData,
Pistache::Http::ResponseWriter& response);
void release_pdu_session(const std::string &pduSessionRef,
const ReleaseData &releaseData,
Pistache::Http::ResponseWriter &response);
void update_pdu_session(const std::string &pduSessionRef,
const HsmfUpdateData &hsmfUpdateData,
Pistache::Http::ResponseWriter &response);
private:
smf::smf_app *m_smf_app;
smf::smf_app* m_smf_app;
std::string m_address;
};
}
}
}
} // namespace api
} // namespace smf_server
} // namespace oai
#endif
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
* IndividualSMContextApiImpl.h
*
*
*/
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the
* License at
*
* http://www.openairinterface.org/?page_id=698
*
......@@ -36,6 +32,12 @@
* contact@openairinterface.org
*/
/*
* IndividualSMContextApiImpl.h
*
*
*/
#ifndef INDIVIDUAL_SM_CONTEXT_API_IMPL_H_
#define INDIVIDUAL_SM_CONTEXT_API_IMPL_H_
......@@ -66,36 +68,39 @@ namespace api {
using namespace oai::smf_server::model;
class IndividualSMContextApiImpl :
public oai::smf_server::api::IndividualSMContextApi {
class IndividualSMContextApiImpl
: public oai::smf_server::api::IndividualSMContextApi {
public:
IndividualSMContextApiImpl(std::shared_ptr<Pistache::Rest::Router>,
smf::smf_app *smf_app_inst, std::string address);
~IndividualSMContextApiImpl() {
}
IndividualSMContextApiImpl(
std::shared_ptr<Pistache::Rest::Router>, smf::smf_app* smf_app_inst,
std::string address);
~IndividualSMContextApiImpl() {}
void release_sm_context(
const std::string &smContextRef,
const SmContextReleaseMessage &smContextReleaseMessage,
Pistache::Http::ResponseWriter &response);
void retrieve_sm_context(const std::string &smContextRef,
const SmContextRetrieveData &smContextRetrieveData,
Pistache::Http::ResponseWriter &response);
void update_sm_context(const std::string &smContextRef,
const SmContextUpdateMessage &smContextUpdateMessage,
Pistache::Http::ResponseWriter &response);
const std::string& smContextRef,
const SmContextReleaseMessage& smContextReleaseMessage,
Pistache::Http::ResponseWriter& response);
void retrieve_sm_context(
const std::string& smContextRef,
const SmContextRetrieveData& smContextRetrieveData,
Pistache::Http::ResponseWriter& response);
void update_sm_context(
const std::string& smContextRef,
const SmContextUpdateMessage& smContextUpdateMessage,
Pistache::Http::ResponseWriter& response);
private:
smf::smf_app *m_smf_app;
smf::smf_app* m_smf_app;
std::string m_address;
protected:
static uint64_t generate_promise_id() {
return util::uint_uid_generator<uint64_t>::get_instance().get_uid();
}
};
}
}
}
} // namespace api
} // namespace smf_server
} // namespace oai
#endif
/**
* Nsmf_EventExposure
* Session Management Event Exposure Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
* Nsmf_EventExposure
* Session Management Event Exposure Service. © 2019, 3GPP Organizational
* Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the
* License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#include "IndividualSubscriptionDocumentApiImpl.h"
......@@ -19,31 +42,40 @@ namespace api {
using namespace oai::smf_server::model;
IndividualSubscriptionDocumentApiImpl::IndividualSubscriptionDocumentApiImpl(
std::shared_ptr<Pistache::Rest::Router> rtr, smf::smf_app *smf_app_inst,
std::shared_ptr<Pistache::Rest::Router> rtr, smf::smf_app* smf_app_inst,
std::string address)
:
IndividualSubscriptionDocumentApi(rtr),
m_smf_app(smf_app_inst),
m_address(address) {
}
void IndividualSubscriptionDocumentApiImpl::delete_individual_subcription(const std::string &subId, Pistache::Http::ResponseWriter &response) {
Logger::smf_api_server().info("IndividualSubscriptionDocumentApiImpl::delete_individual_subcription...");
response.send(Pistache::Http::Code::Not_Implemented,
"delete_individual_subcription API has not been implemented yet!\n");
}
void IndividualSubscriptionDocumentApiImpl::get_individual_subcription(const std::string &subId, Pistache::Http::ResponseWriter &response) {
Logger::smf_api_server().info("IndividualSubscriptionDocumentApiImpl::get_individual_subcription...");
response.send(Pistache::Http::Code::Not_Implemented,
"get_individual_subcription API has not been implemented yet!\n");
}
void IndividualSubscriptionDocumentApiImpl::replace_individual_subcription(const std::string &subId, const NsmfEventExposure &nsmfEventExposure, Pistache::Http::ResponseWriter &response) {
Logger::smf_api_server().info("IndividualSubscriptionDocumentApiImpl::replace_individual_subcription...");
response.send(Pistache::Http::Code::Not_Implemented,
"replace_individual_subcription API has not been implemented yet!\n");
}
: IndividualSubscriptionDocumentApi(rtr),
m_smf_app(smf_app_inst),
m_address(address) {}
void IndividualSubscriptionDocumentApiImpl::delete_individual_subcription(
const std::string& subId, Pistache::Http::ResponseWriter& response) {
Logger::smf_api_server().info(
"IndividualSubscriptionDocumentApiImpl::delete_individual_subcription.."
".");
response.send(
Pistache::Http::Code::Not_Implemented,
"delete_individual_subcription API has not been implemented yet!\n");
}
void IndividualSubscriptionDocumentApiImpl::get_individual_subcription(
const std::string& subId, Pistache::Http::ResponseWriter& response) {
Logger::smf_api_server().info(
"IndividualSubscriptionDocumentApiImpl::get_individual_subcription...");
response.send(
Pistache::Http::Code::Not_Implemented,
"get_individual_subcription API has not been implemented yet!\n");
}
void IndividualSubscriptionDocumentApiImpl::replace_individual_subcription(
const std::string& subId, const NsmfEventExposure& nsmfEventExposure,
Pistache::Http::ResponseWriter& response) {
Logger::smf_api_server().info(
"IndividualSubscriptionDocumentApiImpl::replace_individual_subcription.."
".");
response.send(
Pistache::Http::Code::Not_Implemented,
"replace_individual_subcription API has not been implemented yet!\n");
}
} // namespace api
} // namespace smf_server
} // namespace oai
/**
* Nsmf_EventExposure
* Session Management Event Exposure Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
* Nsmf_EventExposure
* Session Management Event Exposure Service. © 2019, 3GPP Organizational
* Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
* IndividualSubscriptionDocumentApiImpl.h
*
*
*/
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the
* License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the
* License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*
* IndividualSubscriptionDocumentApiImpl.h
*
*
*/
#ifndef INDIVIDUAL_SUBSCRIPTION_DOCUMENT_API_IMPL_H_
#define INDIVIDUAL_SUBSCRIPTION_DOCUMENT_API_IMPL_H_
#include <pistache/endpoint.h>
#include <pistache/http.h>
#include <pistache/router.h>
......@@ -40,25 +82,29 @@ namespace api {
using namespace oai::smf_server::model;
class IndividualSubscriptionDocumentApiImpl : public oai::smf_server::api::IndividualSubscriptionDocumentApi {
public:
IndividualSubscriptionDocumentApiImpl(std::shared_ptr<Pistache::Rest::Router>,
smf::smf_app *smf_app_inst, std::string address);
~IndividualSubscriptionDocumentApiImpl() {}
void delete_individual_subcription(const std::string &subId, Pistache::Http::ResponseWriter &response);
void get_individual_subcription(const std::string &subId, Pistache::Http::ResponseWriter &response);
void replace_individual_subcription(const std::string &subId, const NsmfEventExposure &nsmfEventExposure, Pistache::Http::ResponseWriter &response);
private:
smf::smf_app *m_smf_app;
std::string m_address;
class IndividualSubscriptionDocumentApiImpl
: public oai::smf_server::api::IndividualSubscriptionDocumentApi {
public:
IndividualSubscriptionDocumentApiImpl(
std::shared_ptr<Pistache::Rest::Router>, smf::smf_app* smf_app_inst,
std::string address);
~IndividualSubscriptionDocumentApiImpl() {}
void delete_individual_subcription(
const std::string& subId, Pistache::Http::ResponseWriter& response);
void get_individual_subcription(
const std::string& subId, Pistache::Http::ResponseWriter& response);
void replace_individual_subcription(
const std::string& subId, const NsmfEventExposure& nsmfEventExposure,
Pistache::Http::ResponseWriter& response);
private:
smf::smf_app* m_smf_app;
std::string m_address;
};
}
}
}
} // namespace api
} // namespace smf_server
} // namespace oai
#endif
......@@ -11,6 +11,27 @@
* the class manually.
*/
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the
* License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#include "NFStatusNotifyApiImpl.h"
#include "logger.hpp"
......
......@@ -17,6 +17,28 @@
*
*/
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the
* License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#ifndef NF_STATUS_NOTIFY_API_IMPL_H_
#define NF_STATUS_NOTIFY_API_IMPL_H_
......
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the
* License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#include "PDUSessionsCollectionApiImpl.h"
namespace oai {
......@@ -19,24 +42,21 @@ namespace api {
using namespace oai::smf_server::model;
PDUSessionsCollectionApiImpl::PDUSessionsCollectionApiImpl(
std::shared_ptr<Pistache::Rest::Router> rtr, smf::smf_app *smf_app_inst,
std::shared_ptr<Pistache::Rest::Router> rtr, smf::smf_app* smf_app_inst,
std::string address)
:
PDUSessionsCollectionApi(rtr),
m_smf_app(smf_app_inst),
m_address(address) {
}
: PDUSessionsCollectionApi(rtr),
m_smf_app(smf_app_inst),
m_address(address) {}
void PDUSessionsCollectionApiImpl::post_pdu_sessions(
const PduSessionCreateData &pduSessionCreateData,
Pistache::Http::ResponseWriter &response) {
const PduSessionCreateData& pduSessionCreateData,
Pistache::Http::ResponseWriter& response) {
Logger::smf_api_server().info("post_pdu_sessions...");
response.send(Pistache::Http::Code::Not_Implemented,
"Post_pdu_sessions API has not been implemented yet!\n");
}
}
}
response.send(
Pistache::Http::Code::Not_Implemented,
"Post_pdu_sessions API has not been implemented yet!\n");
}
} // namespace api
} // namespace smf_server
} // namespace oai
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the
* License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*
......@@ -40,23 +62,25 @@ namespace api {
using namespace oai::smf_server::model;
class PDUSessionsCollectionApiImpl :
public oai::smf_server::api::PDUSessionsCollectionApi {
class PDUSessionsCollectionApiImpl
: public oai::smf_server::api::PDUSessionsCollectionApi {
public:
PDUSessionsCollectionApiImpl(std::shared_ptr<Pistache::Rest::Router>,
smf::smf_app *smf_app_inst, std::string address);
~PDUSessionsCollectionApiImpl() {
}
PDUSessionsCollectionApiImpl(
std::shared_ptr<Pistache::Rest::Router>, smf::smf_app* smf_app_inst,
std::string address);
~PDUSessionsCollectionApiImpl() {}
void post_pdu_sessions(
const PduSessionCreateData& pduSessionCreateData,
Pistache::Http::ResponseWriter& response);
void post_pdu_sessions(const PduSessionCreateData &pduSessionCreateData,
Pistache::Http::ResponseWriter &response);
private:
smf::smf_app *m_smf_app;
smf::smf_app* m_smf_app;
std::string m_address;
};
}
}
}
} // namespace api
} // namespace smf_server
} // namespace oai
#endif
This diff is collapsed.
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
* SMContextsCollectionApiImpl.h
*
*
*/
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the
* License at
*
* http://www.openairinterface.org/?page_id=698
*
......@@ -36,6 +32,12 @@
* contact@openairinterface.org
*/
/*
* SMContextsCollectionApiImpl.h
*
*
*/
#ifndef SM_CONTEXTS_COLLECTION_API_IMPL_H_
#define SM_CONTEXTS_COLLECTION_API_IMPL_H_
......@@ -60,28 +62,30 @@ namespace api {
using namespace oai::smf_server::model;
class SMContextsCollectionApiImpl :
public oai::smf_server::api::SMContextsCollectionApi {
class SMContextsCollectionApiImpl
: public oai::smf_server::api::SMContextsCollectionApi {
public:
SMContextsCollectionApiImpl(std::shared_ptr<Pistache::Rest::Router>,
smf::smf_app *smf_app_inst, std::string address);
~SMContextsCollectionApiImpl() {
}
SMContextsCollectionApiImpl(
std::shared_ptr<Pistache::Rest::Router>, smf::smf_app* smf_app_inst,
std::string address);
~SMContextsCollectionApiImpl() {}
void post_sm_contexts(
const SmContextMessage& smContextMessage,
Pistache::Http::ResponseWriter& response);
void post_sm_contexts(const SmContextMessage &smContextMessage,
Pistache::Http::ResponseWriter &response);
private:
smf::smf_app *m_smf_app;
smf::smf_app* m_smf_app;
std::string m_address;
protected:
static uint64_t generate_promise_id() {
return util::uint_uid_generator<uint64_t>::get_instance().get_uid();
}
};
}
}
}
} // namespace api
} // namespace smf_server
} // namespace oai
#endif
/**
* Nsmf_EventExposure
* Session Management Event Exposure Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
* Nsmf_EventExposure
* Session Management Event Exposure Service. © 2019, 3GPP Organizational
* Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the
* License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#include "SubscriptionsCollectionApiImpl.h"
......@@ -27,89 +49,87 @@ namespace api {
using namespace oai::smf_server::model;
SubscriptionsCollectionApiImpl::SubscriptionsCollectionApiImpl(
std::shared_ptr<Pistache::Rest::Router> rtr, smf::smf_app *smf_app_inst,
std::shared_ptr<Pistache::Rest::Router> rtr, smf::smf_app* smf_app_inst,
std::string address)
:
SubscriptionsCollectionApi(rtr),
m_smf_app(smf_app_inst),
m_address(address) {
}
: SubscriptionsCollectionApi(rtr),
m_smf_app(smf_app_inst),
m_address(address) {}
void SubscriptionsCollectionApiImpl::create_individual_subcription(
const NsmfEventExposure &nsmfEventExposure,
Pistache::Http::ResponseWriter &response) {
const NsmfEventExposure& nsmfEventExposure,
Pistache::Http::ResponseWriter& response) {
Logger::smf_api_server().info(
"SubscriptionsCollectionApiImpl::create_individual_subcription...");
//Step1. Create a message and store the necessary information
// Step1. Create a message and store the necessary information
Logger::smf_api_server().debug(
"Create a Event Exposure message and store the necessary information");
smf::event_exposure_msg event_exposure = { };
smf::event_exposure_msg event_exposure = {};
//Supi
// Supi
if (nsmfEventExposure.supiIsSet()) {
supi_t supi = { .length = 0 };
std::size_t pos = nsmfEventExposure.getSupi().find("-");
std::string supi_str = nsmfEventExposure.getSupi().substr(pos + 1);
supi_t supi = {.length = 0};
std::size_t pos = nsmfEventExposure.getSupi().find("-");
std::string supi_str = nsmfEventExposure.getSupi().substr(pos + 1);
std::string supi_prefix = nsmfEventExposure.getSupi().substr(0, pos);
smf_string_to_supi(&supi, supi_str.c_str());
event_exposure.set_supi(supi);
event_exposure.set_supi_prefix(supi_prefix);
Logger::smf_api_server().debug("SUPI %s, SUPI Prefix %s, IMSI %s",
nsmfEventExposure.getSupi().c_str(),
supi_prefix.c_str(), supi_str.c_str());
Logger::smf_api_server().debug(
"SUPI %s, SUPI Prefix %s, IMSI %s", nsmfEventExposure.getSupi().c_str(),
supi_prefix.c_str(), supi_str.c_str());
}
//PDU session ID
// PDU session ID
if (nsmfEventExposure.pduSeIdIsSet()) {
Logger::smf_api_server().debug("PDU Session ID %d",
nsmfEventExposure.getPduSeId());
Logger::smf_api_server().debug(
"PDU Session ID %d", nsmfEventExposure.getPduSeId());
event_exposure.set_pdu_session_id(nsmfEventExposure.getPduSeId());
}
event_exposure.set_notif_id(nsmfEventExposure.getNotifId()); //NotifId
event_exposure.set_notif_uri(nsmfEventExposure.getNotifUri()); //NotifUri
event_exposure.set_notif_id(nsmfEventExposure.getNotifId()); // NotifId
event_exposure.set_notif_uri(nsmfEventExposure.getNotifUri()); // NotifUri
//EventSubscription: TODO
event_subscription_t event_subscription = { };
event_subscription.smf_event = smf_event_t::SMF_EVENT_PDU_SES_REL;
std::vector<event_subscription_t> event_subscriptions = { };
// EventSubscription: TODO
event_subscription_t event_subscription = {};
event_subscription.smf_event = smf_event_t::SMF_EVENT_PDU_SES_REL;
std::vector<event_subscription_t> event_subscriptions = {};
event_subscriptions.push_back(event_subscription);
event_exposure.set_event_subs(event_subscriptions);
//std::vector<EventSubscription> eventSubscriptions;
//for (auto it: nsmfEventExposure.getEventSubs()){
//event_subscription.smf_event = it.getEvent();
//getDnaiChgType
//event_subscriptions.push_back(event_subscription);
// std::vector<EventSubscription> eventSubscriptions;
// for (auto it: nsmfEventExposure.getEventSubs()){
// event_subscription.smf_event = it.getEvent();
// getDnaiChgType
// event_subscriptions.push_back(event_subscription);
//}
//Step 2. Handle the message in smf_app
std::shared_ptr<itti_sbi_event_exposure_request> itti_msg = std::make_shared
< itti_sbi_event_exposure_request > (TASK_SMF_N11, TASK_SMF_APP);
// Step 2. Handle the message in smf_app
std::shared_ptr<itti_sbi_event_exposure_request> itti_msg =
std::make_shared<itti_sbi_event_exposure_request>(
TASK_SMF_N11, TASK_SMF_APP);
itti_msg->event_exposure = event_exposure;
itti_msg->http_version = 1;
itti_msg->http_version = 1;
evsub_id_t sub_id = m_smf_app->handle_event_exposure_subscription(itti_msg);
//send response
nlohmann::json json_data = { };
// send response
nlohmann::json json_data = {};
to_json(json_data, nsmfEventExposure);
if (sub_id != -1) {
json_data["subId"] = std::to_string(sub_id);
response.headers().add < Pistache::Http::Header::Location
> (m_address + base + smf_cfg.sbi_api_version + "/nsmf_event-exposure/"
+ std::to_string(sub_id)); //Location header
response.headers().add<Pistache::Http::Header::Location>(
m_address + base + smf_cfg.sbi_api_version + "/nsmf_event-exposure/" +
std::to_string(sub_id)); // Location header
}
response.headers().add < Pistache::Http::Header::ContentType
> (Pistache::Http::Mime::MediaType("application/json"));
response.headers().add<Pistache::Http::Header::ContentType>(
Pistache::Http::Mime::MediaType("application/json"));
response.send(Pistache::Http::Code(201), json_data.dump().c_str());
}
}
}
}
} // namespace api
} // namespace smf_server
} // namespace oai
/**
* Nsmf_EventExposure
* Session Management Event Exposure Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
* Nsmf_EventExposure
* Session Management Event Exposure Service. © 2019, 3GPP Organizational
* Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
* SubscriptionsCollectionApiImpl.h
*
*
*/
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the
* License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*
* SubscriptionsCollectionApiImpl.h
*
*
*/
#ifndef SUBSCRIPTIONS_COLLECTION_API_IMPL_H_
#define SUBSCRIPTIONS_COLLECTION_API_IMPL_H_
#include <pistache/endpoint.h>
#include <pistache/http.h>
#include <pistache/router.h>
......@@ -39,27 +60,30 @@ namespace api {
using namespace oai::smf_server::model;
class SubscriptionsCollectionApiImpl : public oai::smf_server::api::SubscriptionsCollectionApi {
public:
SubscriptionsCollectionApiImpl(std::shared_ptr<Pistache::Rest::Router>,
smf::smf_app *smf_app_inst, std::string address);
~SubscriptionsCollectionApiImpl() {}
void create_individual_subcription(const NsmfEventExposure &nsmfEventExposure, Pistache::Http::ResponseWriter &response);
private:
smf::smf_app *m_smf_app;
std::string m_address;
protected:
static uint64_t generate_promise_id() {
return util::uint_uid_generator<uint64_t>::get_instance().get_uid();
}
class SubscriptionsCollectionApiImpl
: public oai::smf_server::api::SubscriptionsCollectionApi {
public:
SubscriptionsCollectionApiImpl(
std::shared_ptr<Pistache::Rest::Router>, smf::smf_app* smf_app_inst,
std::string address);
~SubscriptionsCollectionApiImpl() {}
void create_individual_subcription(
const NsmfEventExposure& nsmfEventExposure,
Pistache::Http::ResponseWriter& response);
private:
smf::smf_app* m_smf_app;
std::string m_address;
protected:
static uint64_t generate_promise_id() {
return util::uint_uid_generator<uint64_t>::get_instance().get_uid();
}
};
}
}
}
} // namespace api
} // namespace smf_server
} // namespace oai
#endif
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
#include "AccessType.h"
......@@ -17,31 +17,20 @@ namespace oai {
namespace smf_server {
namespace model {
AccessType::AccessType()
{
}
AccessType::AccessType() {}
AccessType::~AccessType()
{
}
void AccessType::validate()
{
// TODO: implement validation
}
AccessType::~AccessType() {}
void to_json(nlohmann::json& j, const AccessType& o)
{
j = nlohmann::json();
void AccessType::validate() {
// TODO: implement validation
}
void from_json(const nlohmann::json& j, AccessType& o)
{
void to_json(nlohmann::json& j, const AccessType& o) {
j = nlohmann::json();
}
void from_json(const nlohmann::json& j, AccessType& o) {}
}
}
}
} // namespace model
} // namespace smf_server
} // namespace oai
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
* AccessType.h
*
*
*
*/
#ifndef AccessType_H_
#define AccessType_H_
#include <nlohmann/json.hpp>
namespace oai {
......@@ -26,27 +26,26 @@ namespace smf_server {
namespace model {
/// <summary>
///
///
/// </summary>
class AccessType
{
public:
AccessType();
virtual ~AccessType();
class AccessType {
public:
AccessType();
virtual ~AccessType();
void validate();
void validate();
/////////////////////////////////////////////
/// AccessType members
/////////////////////////////////////////////
/// AccessType members
friend void to_json(nlohmann::json& j, const AccessType& o);
friend void from_json(const nlohmann::json& j, AccessType& o);
friend void to_json(nlohmann::json& j, const AccessType& o);
friend void from_json(const nlohmann::json& j, AccessType& o);
protected:
protected:
};
}
}
}
} // namespace model
} // namespace smf_server
} // namespace oai
#endif /* AccessType_H_ */
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
#include "AdditionalQosFlowInfo.h"
......@@ -17,31 +17,20 @@ namespace oai {
namespace smf_server {
namespace model {
AdditionalQosFlowInfo::AdditionalQosFlowInfo()
{
}
AdditionalQosFlowInfo::AdditionalQosFlowInfo() {}
AdditionalQosFlowInfo::~AdditionalQosFlowInfo()
{
}
void AdditionalQosFlowInfo::validate()
{
// TODO: implement validation
}
AdditionalQosFlowInfo::~AdditionalQosFlowInfo() {}
void to_json(nlohmann::json& j, const AdditionalQosFlowInfo& o)
{
j = nlohmann::json();
void AdditionalQosFlowInfo::validate() {
// TODO: implement validation
}
void from_json(const nlohmann::json& j, AdditionalQosFlowInfo& o)
{
void to_json(nlohmann::json& j, const AdditionalQosFlowInfo& o) {
j = nlohmann::json();
}
void from_json(const nlohmann::json& j, AdditionalQosFlowInfo& o) {}
}
}
}
} // namespace model
} // namespace smf_server
} // namespace oai
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
* AdditionalQosFlowInfo.h
*
*
*
*/
#ifndef AdditionalQosFlowInfo_H_
#define AdditionalQosFlowInfo_H_
#include <nlohmann/json.hpp>
namespace oai {
......@@ -26,27 +26,26 @@ namespace smf_server {
namespace model {
/// <summary>
///
///
/// </summary>
class AdditionalQosFlowInfo
{
public:
AdditionalQosFlowInfo();
virtual ~AdditionalQosFlowInfo();
class AdditionalQosFlowInfo {
public:
AdditionalQosFlowInfo();
virtual ~AdditionalQosFlowInfo();
void validate();
void validate();
/////////////////////////////////////////////
/// AdditionalQosFlowInfo members
/////////////////////////////////////////////
/// AdditionalQosFlowInfo members
friend void to_json(nlohmann::json& j, const AdditionalQosFlowInfo& o);
friend void from_json(const nlohmann::json& j, AdditionalQosFlowInfo& o);
friend void to_json(nlohmann::json& j, const AdditionalQosFlowInfo& o);
friend void from_json(const nlohmann::json& j, AdditionalQosFlowInfo& o);
protected:
protected:
};
}
}
}
} // namespace model
} // namespace smf_server
} // namespace oai
#endif /* AdditionalQosFlowInfo_H_ */
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
#include "Ambr.h"
......@@ -17,55 +17,41 @@ namespace oai {
namespace smf_server {
namespace model {
Ambr::Ambr()
{
m_Uplink = "";
m_Downlink = "";
Ambr::Ambr() {
m_Uplink = "";
m_Downlink = "";
}
Ambr::~Ambr()
{
}
Ambr::~Ambr() {}
void Ambr::validate()
{
// TODO: implement validation
void Ambr::validate() {
// TODO: implement validation
}
void to_json(nlohmann::json& j, const Ambr& o)
{
j = nlohmann::json();
j["uplink"] = o.m_Uplink;
j["downlink"] = o.m_Downlink;
void to_json(nlohmann::json& j, const Ambr& o) {
j = nlohmann::json();
j["uplink"] = o.m_Uplink;
j["downlink"] = o.m_Downlink;
}
void from_json(const nlohmann::json& j, Ambr& o)
{
j.at("uplink").get_to(o.m_Uplink);
j.at("downlink").get_to(o.m_Downlink);
void from_json(const nlohmann::json& j, Ambr& o) {
j.at("uplink").get_to(o.m_Uplink);
j.at("downlink").get_to(o.m_Downlink);
}
std::string Ambr::getUplink() const
{
return m_Uplink;
}
void Ambr::setUplink(std::string const& value)
{
m_Uplink = value;
std::string Ambr::getUplink() const {
return m_Uplink;
}
std::string Ambr::getDownlink() const
{
return m_Downlink;
}
void Ambr::setDownlink(std::string const& value)
{
m_Downlink = value;
}
void Ambr::setUplink(std::string const& value) {
m_Uplink = value;
}
std::string Ambr::getDownlink() const {
return m_Downlink;
}
void Ambr::setDownlink(std::string const& value) {
m_Downlink = value;
}
} // namespace model
} // namespace smf_server
} // namespace oai
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
* Ambr.h
*
*
*
*/
#ifndef Ambr_H_
#define Ambr_H_
#include <string>
#include <nlohmann/json.hpp>
......@@ -27,41 +27,40 @@ namespace smf_server {
namespace model {
/// <summary>
///
///
/// </summary>
class Ambr
{
public:
Ambr();
virtual ~Ambr();
class Ambr {
public:
Ambr();
virtual ~Ambr();
void validate();
void validate();
/////////////////////////////////////////////
/// Ambr members
/////////////////////////////////////////////
/// Ambr members
/// <summary>
///
/// </summary>
std::string getUplink() const;
void setUplink(std::string const& value);
/// <summary>
///
/// </summary>
std::string getDownlink() const;
void setDownlink(std::string const& value);
/// <summary>
///
/// </summary>
std::string getUplink() const;
void setUplink(std::string const& value);
/// <summary>
///
/// </summary>
std::string getDownlink() const;
void setDownlink(std::string const& value);
friend void to_json(nlohmann::json& j, const Ambr& o);
friend void from_json(const nlohmann::json& j, Ambr& o);
protected:
std::string m_Uplink;
friend void to_json(nlohmann::json& j, const Ambr& o);
friend void from_json(const nlohmann::json& j, Ambr& o);
std::string m_Downlink;
protected:
std::string m_Uplink;
std::string m_Downlink;
};
}
}
}
} // namespace model
} // namespace smf_server
} // namespace oai
#endif /* Ambr_H_ */
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
#include "Arp.h"
......@@ -17,65 +17,48 @@ namespace oai {
namespace smf_server {
namespace model {
Arp::Arp()
{
m_PriorityLevel = 0;
Arp::Arp() {
m_PriorityLevel = 0;
}
Arp::~Arp()
{
}
Arp::~Arp() {}
void Arp::validate()
{
// TODO: implement validation
void Arp::validate() {
// TODO: implement validation
}
void to_json(nlohmann::json& j, const Arp& o)
{
j = nlohmann::json();
j["priorityLevel"] = o.m_PriorityLevel;
j["preemptCap"] = o.m_PreemptCap;
j["preemptVuln"] = o.m_PreemptVuln;
void to_json(nlohmann::json& j, const Arp& o) {
j = nlohmann::json();
j["priorityLevel"] = o.m_PriorityLevel;
j["preemptCap"] = o.m_PreemptCap;
j["preemptVuln"] = o.m_PreemptVuln;
}
void from_json(const nlohmann::json& j, Arp& o)
{
j.at("priorityLevel").get_to(o.m_PriorityLevel);
j.at("preemptCap").get_to(o.m_PreemptCap);
j.at("preemptVuln").get_to(o.m_PreemptVuln);
void from_json(const nlohmann::json& j, Arp& o) {
j.at("priorityLevel").get_to(o.m_PriorityLevel);
j.at("preemptCap").get_to(o.m_PreemptCap);
j.at("preemptVuln").get_to(o.m_PreemptVuln);
}
int32_t Arp::getPriorityLevel() const
{
return m_PriorityLevel;
}
void Arp::setPriorityLevel(int32_t const value)
{
m_PriorityLevel = value;
int32_t Arp::getPriorityLevel() const {
return m_PriorityLevel;
}
PreemptionCapability Arp::getPreemptCap() const
{
return m_PreemptCap;
void Arp::setPriorityLevel(int32_t const value) {
m_PriorityLevel = value;
}
void Arp::setPreemptCap(PreemptionCapability const& value)
{
m_PreemptCap = value;
PreemptionCapability Arp::getPreemptCap() const {
return m_PreemptCap;
}
PreemptionVulnerability Arp::getPreemptVuln() const
{
return m_PreemptVuln;
}
void Arp::setPreemptVuln(PreemptionVulnerability const& value)
{
m_PreemptVuln = value;
}
void Arp::setPreemptCap(PreemptionCapability const& value) {
m_PreemptCap = value;
}
PreemptionVulnerability Arp::getPreemptVuln() const {
return m_PreemptVuln;
}
void Arp::setPreemptVuln(PreemptionVulnerability const& value) {
m_PreemptVuln = value;
}
} // namespace model
} // namespace smf_server
} // namespace oai
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
* Arp.h
*
*
*
*/
#ifndef Arp_H_
#define Arp_H_
#include "PreemptionCapability.h"
#include "PreemptionVulnerability.h"
#include <nlohmann/json.hpp>
......@@ -28,48 +28,47 @@ namespace smf_server {
namespace model {
/// <summary>
///
///
/// </summary>
class Arp
{
public:
Arp();
virtual ~Arp();
class Arp {
public:
Arp();
virtual ~Arp();
void validate();
void validate();
/////////////////////////////////////////////
/// Arp members
/////////////////////////////////////////////
/// Arp members
/// <summary>
/// nullable true shall not be used for this attribute
/// </summary>
int32_t getPriorityLevel() const;
void setPriorityLevel(int32_t const value);
/// <summary>
///
/// </summary>
PreemptionCapability getPreemptCap() const;
void setPreemptCap(PreemptionCapability const& value);
/// <summary>
///
/// </summary>
PreemptionVulnerability getPreemptVuln() const;
void setPreemptVuln(PreemptionVulnerability const& value);
/// <summary>
/// nullable true shall not be used for this attribute
/// </summary>
int32_t getPriorityLevel() const;
void setPriorityLevel(int32_t const value);
/// <summary>
///
/// </summary>
PreemptionCapability getPreemptCap() const;
void setPreemptCap(PreemptionCapability const& value);
/// <summary>
///
/// </summary>
PreemptionVulnerability getPreemptVuln() const;
void setPreemptVuln(PreemptionVulnerability const& value);
friend void to_json(nlohmann::json& j, const Arp& o);
friend void from_json(const nlohmann::json& j, Arp& o);
protected:
int32_t m_PriorityLevel;
friend void to_json(nlohmann::json& j, const Arp& o);
friend void from_json(const nlohmann::json& j, Arp& o);
PreemptionCapability m_PreemptCap;
protected:
int32_t m_PriorityLevel;
PreemptionVulnerability m_PreemptVuln;
PreemptionCapability m_PreemptCap;
PreemptionVulnerability m_PreemptVuln;
};
}
}
}
} // namespace model
} // namespace smf_server
} // namespace oai
#endif /* Arp_H_ */
/**
* NRF NFManagement Service
* NRF NFManagement Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* NRF NFManagement Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
#include "AtsssCapability.h"
......@@ -17,29 +18,25 @@ namespace smf_server {
namespace model {
AtsssCapability::AtsssCapability() {
m_AtsssLL = false;
m_AtsssLL = false;
m_AtsssLLIsSet = false;
m_Mptcp = false;
m_MptcpIsSet = false;
m_Mptcp = false;
m_MptcpIsSet = false;
}
AtsssCapability::~AtsssCapability() {
}
AtsssCapability::~AtsssCapability() {}
void AtsssCapability::validate() {
// TODO: implement validation
}
void to_json(nlohmann::json &j, const AtsssCapability &o) {
void to_json(nlohmann::json& j, const AtsssCapability& o) {
j = nlohmann::json();
if (o.atsssLLIsSet())
j["atsssLL"] = o.m_AtsssLL;
if (o.mptcpIsSet())
j["mptcp"] = o.m_Mptcp;
if (o.atsssLLIsSet()) j["atsssLL"] = o.m_AtsssLL;
if (o.mptcpIsSet()) j["mptcp"] = o.m_Mptcp;
}
void from_json(const nlohmann::json &j, AtsssCapability &o) {
void from_json(const nlohmann::json& j, AtsssCapability& o) {
if (j.find("atsssLL") != j.end()) {
j.at("atsssLL").get_to(o.m_AtsssLL);
o.m_AtsssLLIsSet = true;
......@@ -54,7 +51,7 @@ bool AtsssCapability::isAtsssLL() const {
return m_AtsssLL;
}
void AtsssCapability::setAtsssLL(bool const value) {
m_AtsssLL = value;
m_AtsssLL = value;
m_AtsssLLIsSet = true;
}
bool AtsssCapability::atsssLLIsSet() const {
......@@ -67,7 +64,7 @@ bool AtsssCapability::isMptcp() const {
return m_Mptcp;
}
void AtsssCapability::setMptcp(bool const value) {
m_Mptcp = value;
m_Mptcp = value;
m_MptcpIsSet = true;
}
bool AtsssCapability::mptcpIsSet() const {
......@@ -77,7 +74,6 @@ void AtsssCapability::unsetMptcp() {
m_MptcpIsSet = false;
}
}
}
}
} // namespace model
} // namespace smf_server
} // namespace oai
/**
* NRF NFManagement Service
* NRF NFManagement Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* NRF NFManagement Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
* AtsssCapability.h
*
*
*
*/
#ifndef AtsssCapability_H_
......@@ -25,7 +26,7 @@ namespace smf_server {
namespace model {
/// <summary>
///
///
/// </summary>
class AtsssCapability {
public:
......@@ -38,22 +39,23 @@ class AtsssCapability {
/// AtsssCapability members
/// <summary>
///
///
/// </summary>
bool isAtsssLL() const;
void setAtsssLL(bool const value);
bool atsssLLIsSet() const;
void unsetAtsssLL();
/// <summary>
///
///
/// </summary>
bool isMptcp() const;
void setMptcp(bool const value);
bool mptcpIsSet() const;
void unsetMptcp();
friend void to_json(nlohmann::json &j, const AtsssCapability &o);
friend void from_json(const nlohmann::json &j, AtsssCapability &o);
friend void to_json(nlohmann::json& j, const AtsssCapability& o);
friend void from_json(const nlohmann::json& j, AtsssCapability& o);
protected:
bool m_AtsssLL;
bool m_AtsssLLIsSet;
......@@ -61,8 +63,8 @@ class AtsssCapability {
bool m_MptcpIsSet;
};
}
}
}
} // namespace model
} // namespace smf_server
} // namespace oai
#endif /* AtsssCapability_H_ */
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
#include "BackupAmfInfo.h"
......@@ -17,63 +17,47 @@ namespace oai {
namespace smf_server {
namespace model {
BackupAmfInfo::BackupAmfInfo()
{
m_BackupAmf = "";
m_GuamiListIsSet = false;
BackupAmfInfo::BackupAmfInfo() {
m_BackupAmf = "";
m_GuamiListIsSet = false;
}
BackupAmfInfo::~BackupAmfInfo()
{
}
BackupAmfInfo::~BackupAmfInfo() {}
void BackupAmfInfo::validate()
{
// TODO: implement validation
void BackupAmfInfo::validate() {
// TODO: implement validation
}
void to_json(nlohmann::json& j, const BackupAmfInfo& o)
{
j = nlohmann::json();
j["backupAmf"] = o.m_BackupAmf;
if(o.guamiListIsSet())
j["guamiList"] = o.m_GuamiList;
void to_json(nlohmann::json& j, const BackupAmfInfo& o) {
j = nlohmann::json();
j["backupAmf"] = o.m_BackupAmf;
if (o.guamiListIsSet()) j["guamiList"] = o.m_GuamiList;
}
void from_json(const nlohmann::json& j, BackupAmfInfo& o)
{
j.at("backupAmf").get_to(o.m_BackupAmf);
if(j.find("guamiList") != j.end())
{
j.at("guamiList").get_to(o.m_GuamiList);
o.m_GuamiListIsSet = true;
}
void from_json(const nlohmann::json& j, BackupAmfInfo& o) {
j.at("backupAmf").get_to(o.m_BackupAmf);
if (j.find("guamiList") != j.end()) {
j.at("guamiList").get_to(o.m_GuamiList);
o.m_GuamiListIsSet = true;
}
}
std::string BackupAmfInfo::getBackupAmf() const
{
return m_BackupAmf;
}
void BackupAmfInfo::setBackupAmf(std::string const& value)
{
m_BackupAmf = value;
std::string BackupAmfInfo::getBackupAmf() const {
return m_BackupAmf;
}
std::vector<Guami>& BackupAmfInfo::getGuamiList()
{
return m_GuamiList;
void BackupAmfInfo::setBackupAmf(std::string const& value) {
m_BackupAmf = value;
}
bool BackupAmfInfo::guamiListIsSet() const
{
return m_GuamiListIsSet;
}
void BackupAmfInfo::unsetGuamiList()
{
m_GuamiListIsSet = false;
}
std::vector<Guami>& BackupAmfInfo::getGuamiList() {
return m_GuamiList;
}
bool BackupAmfInfo::guamiListIsSet() const {
return m_GuamiListIsSet;
}
void BackupAmfInfo::unsetGuamiList() {
m_GuamiListIsSet = false;
}
} // namespace model
} // namespace smf_server
} // namespace oai
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
* BackupAmfInfo.h
*
*
*
*/
#ifndef BackupAmfInfo_H_
#define BackupAmfInfo_H_
#include <string>
#include <vector>
#include "Guami.h"
......@@ -29,42 +29,42 @@ namespace smf_server {
namespace model {
/// <summary>
///
///
/// </summary>
class BackupAmfInfo
{
public:
BackupAmfInfo();
virtual ~BackupAmfInfo();
class BackupAmfInfo {
public:
BackupAmfInfo();
virtual ~BackupAmfInfo();
void validate();
void validate();
/////////////////////////////////////////////
/// BackupAmfInfo members
/////////////////////////////////////////////
/// BackupAmfInfo members
/// <summary>
///
/// </summary>
std::string getBackupAmf() const;
void setBackupAmf(std::string const& value);
/// <summary>
///
/// </summary>
std::vector<Guami>& getGuamiList();
bool guamiListIsSet() const;
void unsetGuamiList();
/// <summary>
///
/// </summary>
std::string getBackupAmf() const;
void setBackupAmf(std::string const& value);
/// <summary>
///
/// </summary>
std::vector<Guami>& getGuamiList();
bool guamiListIsSet() const;
void unsetGuamiList();
friend void to_json(nlohmann::json& j, const BackupAmfInfo& o);
friend void from_json(const nlohmann::json& j, BackupAmfInfo& o);
friend void to_json(nlohmann::json& j, const BackupAmfInfo& o);
friend void from_json(const nlohmann::json& j, BackupAmfInfo& o);
protected:
std::string m_BackupAmf;
protected:
std::string m_BackupAmf;
std::vector<Guami> m_GuamiList;
bool m_GuamiListIsSet;
std::vector<Guami> m_GuamiList;
bool m_GuamiListIsSet;
};
}
}
}
} // namespace model
} // namespace smf_server
} // namespace oai
#endif /* BackupAmfInfo_H_ */
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
#include "Cause.h"
......@@ -17,31 +17,20 @@ namespace oai {
namespace smf_server {
namespace model {
Cause::Cause()
{
}
Cause::Cause() {}
Cause::~Cause()
{
}
void Cause::validate()
{
// TODO: implement validation
}
Cause::~Cause() {}
void to_json(nlohmann::json& j, const Cause& o)
{
j = nlohmann::json();
void Cause::validate() {
// TODO: implement validation
}
void from_json(const nlohmann::json& j, Cause& o)
{
void to_json(nlohmann::json& j, const Cause& o) {
j = nlohmann::json();
}
void from_json(const nlohmann::json& j, Cause& o) {}
}
}
}
} // namespace model
} // namespace smf_server
} // namespace oai
/**
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
* Nsmf_PDUSession
* SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
* Cause.h
*
* Possible values are - REL_DUE_TO_HO - EPS_FALLBACK - REL_DUE_TO_UP_SEC - DNN_CONGESTION - S_NSSAI_CONGESTION - REL_DUE_TO_REACTIVATION - 5G_AN_NOT_RESPONDING - REL_DUE_TO_SLICE_NOT_AVAILABLE - REL_DUE_TO_DUPLICATE_SESSION_ID - PDU_SESSION_STATUS_MISMATCH - HO_FAILURE - INSUFFICIENT_UP_RESOURCES - PDU_SESSION_HANDED_OVER
* Possible values are - REL_DUE_TO_HO - EPS_FALLBACK - REL_DUE_TO_UP_SEC -
* DNN_CONGESTION - S_NSSAI_CONGESTION - REL_DUE_TO_REACTIVATION -
* 5G_AN_NOT_RESPONDING - REL_DUE_TO_SLICE_NOT_AVAILABLE -
* REL_DUE_TO_DUPLICATE_SESSION_ID - PDU_SESSION_STATUS_MISMATCH - HO_FAILURE -
* INSUFFICIENT_UP_RESOURCES - PDU_SESSION_HANDED_OVER
*/
#ifndef Cause_H_
#define Cause_H_
#include <nlohmann/json.hpp>
namespace oai {
......@@ -26,27 +30,30 @@ namespace smf_server {
namespace model {
/// <summary>
/// Possible values are - REL_DUE_TO_HO - EPS_FALLBACK - REL_DUE_TO_UP_SEC - DNN_CONGESTION - S_NSSAI_CONGESTION - REL_DUE_TO_REACTIVATION - 5G_AN_NOT_RESPONDING - REL_DUE_TO_SLICE_NOT_AVAILABLE - REL_DUE_TO_DUPLICATE_SESSION_ID - PDU_SESSION_STATUS_MISMATCH - HO_FAILURE - INSUFFICIENT_UP_RESOURCES - PDU_SESSION_HANDED_OVER
/// Possible values are - REL_DUE_TO_HO - EPS_FALLBACK - REL_DUE_TO_UP_SEC -
/// DNN_CONGESTION - S_NSSAI_CONGESTION - REL_DUE_TO_REACTIVATION -
/// 5G_AN_NOT_RESPONDING - REL_DUE_TO_SLICE_NOT_AVAILABLE -
/// REL_DUE_TO_DUPLICATE_SESSION_ID - PDU_SESSION_STATUS_MISMATCH - HO_FAILURE -
/// INSUFFICIENT_UP_RESOURCES - PDU_SESSION_HANDED_OVER
/// </summary>
class Cause
{
public:
Cause();
virtual ~Cause();
class Cause {
public:
Cause();
virtual ~Cause();
void validate();
void validate();
/////////////////////////////////////////////
/// Cause members
/////////////////////////////////////////////
/// Cause members
friend void to_json(nlohmann::json& j, const Cause& o);
friend void from_json(const nlohmann::json& j, Cause& o);
friend void to_json(nlohmann::json& j, const Cause& o);
friend void from_json(const nlohmann::json& j, Cause& o);
protected:
protected:
};
}
}
}
} // namespace model
} // namespace smf_server
} // namespace oai
#endif /* Cause_H_ */
/**
* NRF NFManagement Service
* NRF NFManagement Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* NRF NFManagement Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
#include "ChangeItem.h"
......@@ -17,34 +18,29 @@ namespace smf_server {
namespace model {
ChangeItem::ChangeItem() {
m_Path = "";
m_From = "";
m_FromIsSet = false;
m_Path = "";
m_From = "";
m_FromIsSet = false;
m_OrigValueIsSet = false;
m_NewValueIsSet = false;
m_NewValueIsSet = false;
}
ChangeItem::~ChangeItem() {
}
ChangeItem::~ChangeItem() {}
void ChangeItem::validate() {
// TODO: implement validation
}
void to_json(nlohmann::json &j, const ChangeItem &o) {
j = nlohmann::json();
j["op"] = o.m_Op;
void to_json(nlohmann::json& j, const ChangeItem& o) {
j = nlohmann::json();
j["op"] = o.m_Op;
j["path"] = o.m_Path;
if (o.fromIsSet())
j["from"] = o.m_From;
if (o.origValueIsSet())
j["origValue"] = o.m_OrigValue;
if (o.newValueIsSet())
j["newValue"] = o.m_NewValue;
if (o.fromIsSet()) j["from"] = o.m_From;
if (o.origValueIsSet()) j["origValue"] = o.m_OrigValue;
if (o.newValueIsSet()) j["newValue"] = o.m_NewValue;
}
void from_json(const nlohmann::json &j, ChangeItem &o) {
void from_json(const nlohmann::json& j, ChangeItem& o) {
j.at("op").get_to(o.m_Op);
j.at("path").get_to(o.m_Path);
if (j.find("from") != j.end()) {
......@@ -64,20 +60,20 @@ void from_json(const nlohmann::json &j, ChangeItem &o) {
ChangeType ChangeItem::getOp() const {
return m_Op;
}
void ChangeItem::setOp(ChangeType const &value) {
void ChangeItem::setOp(ChangeType const& value) {
m_Op = value;
}
std::string ChangeItem::getPath() const {
return m_Path;
}
void ChangeItem::setPath(std::string const &value) {
void ChangeItem::setPath(std::string const& value) {
m_Path = value;
}
std::string ChangeItem::getFrom() const {
return m_From;
}
void ChangeItem::setFrom(std::string const &value) {
m_From = value;
void ChangeItem::setFrom(std::string const& value) {
m_From = value;
m_FromIsSet = true;
}
bool ChangeItem::fromIsSet() const {
......@@ -89,8 +85,8 @@ void ChangeItem::unsetFrom() {
std::string ChangeItem::getOrigValue() const {
return m_OrigValue;
}
void ChangeItem::setOrigValue(std::string const &value) {
m_OrigValue = value;
void ChangeItem::setOrigValue(std::string const& value) {
m_OrigValue = value;
m_OrigValueIsSet = true;
}
bool ChangeItem::origValueIsSet() const {
......@@ -102,8 +98,8 @@ void ChangeItem::unsetOrigValue() {
std::string ChangeItem::getNewValue() const {
return m_NewValue;
}
void ChangeItem::setNewValue(std::string const &value) {
m_NewValue = value;
void ChangeItem::setNewValue(std::string const& value) {
m_NewValue = value;
m_NewValueIsSet = true;
}
bool ChangeItem::newValueIsSet() const {
......@@ -113,7 +109,6 @@ void ChangeItem::unsetNewValue() {
m_NewValueIsSet = false;
}
}
}
}
} // namespace model
} // namespace smf_server
} // namespace oai
/**
* NRF NFManagement Service
* NRF NFManagement Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* NRF NFManagement Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
* ChangeItem.h
*
*
*
*/
#ifndef ChangeItem_H_
......@@ -28,7 +29,7 @@ namespace smf_server {
namespace model {
/// <summary>
///
///
/// </summary>
class ChangeItem {
public:
......@@ -41,39 +42,40 @@ class ChangeItem {
/// ChangeItem members
/// <summary>
///
///
/// </summary>
ChangeType getOp() const;
void setOp(ChangeType const &value);
void setOp(ChangeType const& value);
/// <summary>
///
///
/// </summary>
std::string getPath() const;
void setPath(std::string const &value);
void setPath(std::string const& value);
/// <summary>
///
///
/// </summary>
std::string getFrom() const;
void setFrom(std::string const &value);
void setFrom(std::string const& value);
bool fromIsSet() const;
void unsetFrom();
/// <summary>
///
///
/// </summary>
std::string getOrigValue() const;
void setOrigValue(std::string const &value);
void setOrigValue(std::string const& value);
bool origValueIsSet() const;
void unsetOrigValue();
/// <summary>
///
///
/// </summary>
std::string getNewValue() const;
void setNewValue(std::string const &value);
void setNewValue(std::string const& value);
bool newValueIsSet() const;
void unsetNewValue();
friend void to_json(nlohmann::json &j, const ChangeItem &o);
friend void from_json(const nlohmann::json &j, ChangeItem &o);
friend void to_json(nlohmann::json& j, const ChangeItem& o);
friend void from_json(const nlohmann::json& j, ChangeItem& o);
protected:
ChangeType m_Op;
......@@ -87,8 +89,8 @@ class ChangeItem {
bool m_NewValueIsSet;
};
}
}
}
} // namespace model
} // namespace smf_server
} // namespace oai
#endif /* ChangeItem_H_ */
/**
* NRF NFManagement Service
* NRF NFManagement Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* NRF NFManagement Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
#include "ChangeType.h"
......@@ -16,25 +17,20 @@ namespace oai {
namespace smf_server {
namespace model {
ChangeType::ChangeType() {
ChangeType::ChangeType() {}
}
ChangeType::~ChangeType() {
}
ChangeType::~ChangeType() {}
void ChangeType::validate() {
// TODO: implement validation
}
void to_json(nlohmann::json &j, const ChangeType &o) {
void to_json(nlohmann::json& j, const ChangeType& o) {
j = nlohmann::json();
}
void from_json(const nlohmann::json &j, ChangeType &o) {
}
}
}
}
void from_json(const nlohmann::json& j, ChangeType& o) {}
} // namespace model
} // namespace smf_server
} // namespace oai
/**
* NRF NFManagement Service
* NRF NFManagement Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* NRF NFManagement Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
* CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
/*
* ChangeType.h
*
*
*
*/
#ifndef ChangeType_H_
......@@ -25,7 +26,7 @@ namespace smf_server {
namespace model {
/// <summary>
///
///
/// </summary>
class ChangeType {
public:
......@@ -37,13 +38,14 @@ class ChangeType {
/////////////////////////////////////////////
/// ChangeType members
friend void to_json(nlohmann::json &j, const ChangeType &o);
friend void from_json(const nlohmann::json &j, ChangeType &o);
friend void to_json(nlohmann::json& j, const ChangeType& o);
friend void from_json(const nlohmann::json& j, ChangeType& o);
protected:
};
}
}
}
} // namespace model
} // namespace smf_server
} // namespace oai
#endif /* ChangeType_H_ */
/**
* Nsmf_EventExposure
* Session Management Event Exposure Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
* Nsmf_EventExposure
* Session Management Event Exposure Service. © 2019, 3GPP Organizational
* Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.0.alpha-1
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
#include "DddStatus.h"
......@@ -17,31 +17,20 @@ namespace oai {
namespace smf_server {
namespace model {
DddStatus::DddStatus()
{
}
DddStatus::DddStatus() {}
DddStatus::~DddStatus()
{
}
void DddStatus::validate()
{
// TODO: implement validation
}
DddStatus::~DddStatus() {}
void to_json(nlohmann::json& j, const DddStatus& o)
{
j = nlohmann::json();
void DddStatus::validate() {
// TODO: implement validation
}
void from_json(const nlohmann::json& j, DddStatus& o)
{
void to_json(nlohmann::json& j, const DddStatus& o) {
j = nlohmann::json();
}
void from_json(const nlohmann::json& j, DddStatus& o) {}
}
}
}
} // namespace model
} // namespace smf_server
} // namespace oai
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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