text: /**
   * RNI API
   * The ETSI MEC ISG MEC012 Radio Network Information API described using OpenAPI
   *
   * OpenAPI spec version: 1.1.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
   */
  
  #ifndef FILE_UDM_API_SERVER_SEEN
  #define FILE_UDM_API_SERVER_SEEN
  
  #include "pistache/endpoint.h"
  #include "pistache/http.h"
  #include "pistache/router.h"
  #ifdef __linux__
  #include <signal.h>
  #include <unistd.h>
  
  #include <vector>
  #endif
  
  #include "AMFRegistrationFor3GPPAccessApiImpl.h"
  #include "AccessAndMobilitySubscriptionDataRetrievalApiImpl.h"
  #include "ConfirmAuthApiImpl.h"
  #include "DeleteAuthApiImpl.h"
  #include "GPSIToSUPITranslationApiImpl.h"
  #include "GenerateAuthDataApiImpl.h"
  #include "GroupIdentifiersApiImpl.h"
  #include "ProvidingAcknowledgementOfSteeringOfRoamingApiImpl.h"
  #include "ProvidingAcknowledgementOfUEParametersUpdateApiImpl.h"
  #include "RetrievalOfMultipleDataSetsApiImpl.h"
  #include "RetrievalOfSharedDataApiImpl.h"
  #include "SMFSelectionSubscriptionDataRetrievalApiImpl.h"
  #include "SMFSmfRegistrationApiImpl.h"
  #include "SMSManagementSubscriptionDataRetrievalApiImpl.h"
  #include "SMSSubscriptionDataRetrievalApiImpl.h"
  #include "SessionManagementSubscriptionDataRetrievalApiImpl.h"
  #include "SliceSelectionSubscriptionDataRetrievalApiImpl.h"
  #include "SubscriptionCreationApiImpl.h"
  #include "SubscriptionCreationForSharedDataApiImpl.h"
  #include "SubscriptionDeletionApiImpl.h"
  #include "SubscriptionDeletionForSharedDataApiImpl.h"
  #include "SubscriptionModificationApiImpl.h"
  #include "TraceConfigurationDataRetrievalApiImpl.h"
  #include "UEContextInSMFDataRetrievalApiImpl.h"
  #include "UEContextInSMSFDataRetrievalApiImpl.h"
  #include "udm_app.hpp"
  
  using namespace oai::udm::app;
  using namespace oai::udm::api;
  using namespace oai::udm::model;
  using namespace oai::udm::config;
  
  class UDMApiServer {
   public:
    UDMApiServer(Pistache::Address address, udm_app* udm_app_inst)
        : m_httpEndpoint(std::make_shared<Pistache::Http::Endpoint>(address)) {
      m_router  = std::make_shared<Pistache::Rest::Router>();
      m_address = address.host() + ":" + (address.port()).toString();
  
      m_accessAndMobilitySubscriptionDataRetrievalApiImpl =
          std::make_shared<AccessAndMobilitySubscriptionDataRetrievalApiImpl>(
              m_router, udm_app_inst, m_address);
      m_gPSIToSUPITranslationApiImpl =
          std::make_shared<GPSIToSUPITranslationApiImpl>(
              m_router, udm_app_inst, m_address);
      m_groupIdentifiersApiImpl = std::make_shared<GroupIdentifiersApiImpl>(
          m_router, udm_app_inst, m_address);
      m_providingAcknowledgementOfSteeringOfRoamingApiImpl =
          std::make_shared<ProvidingAcknowledgementOfSteeringOfRoamingApiImpl>(
              m_router, udm_app_inst, m_address);
      m_providingAcknowledgementOfUEParametersUpdateApiImpl =
          std::make_shared<ProvidingAcknowledgementOfUEParametersUpdateApiImpl>(
              m_router, udm_app_inst, m_address);
      m_retrievalOfMultipleDataSetsApiImpl =
          std::make_shared<RetrievalOfMultipleDataSetsApiImpl>(
              m_router, udm_app_inst, m_address);
      m_retrievalOfSharedDataApiImpl =
          std::make_shared<RetrievalOfSharedDataApiImpl>(
              m_router, udm_app_inst, m_address);
      m_sMFSelectionSubscriptionDataRetrievalApiImpl =
          std::make_shared<SMFSelectionSubscriptionDataRetrievalApiImpl>(
              m_router, udm_app_inst, m_address);
      m_sMSManagementSubscriptionDataRetrievalApiImpl =
          std::make_shared<SMSManagementSubscriptionDataRetrievalApiImpl>(
              m_router, udm_app_inst, m_address);
      m_sMSSubscriptionDataRetrievalApiImpl =
          std::make_shared<SMSSubscriptionDataRetrievalApiImpl>(
              m_router, udm_app_inst, m_address);
      m_sessionManagementSubscriptionDataRetrievalApiImpl =
          std::make_shared<SessionManagementSubscriptionDataRetrievalApiImpl>(
              m_router, udm_app_inst, m_address);
      m_sliceSelectionSubscriptionDataRetrievalApiImpl =
          std::make_shared<SliceSelectionSubscriptionDataRetrievalApiImpl>(
              m_router, udm_app_inst, m_address);
      m_subscriptionCreationApiImpl =
          std::make_shared<SubscriptionCreationApiImpl>(
              m_router, udm_app_inst, m_address);
      m_subscriptionCreationForSharedDataApiImpl =
          std::make_shared<SubscriptionCreationForSharedDataApiImpl>(
              m_router, udm_app_inst, m_address);
      m_subscriptionDeletionApiImpl =
          std::make_shared<SubscriptionDeletionApiImpl>(
              m_router, udm_app_inst, m_address);
      m_subscriptionDeletionForSharedDataApiImpl =
          std::make_shared<SubscriptionDeletionForSharedDataApiImpl>(
              m_router, udm_app_inst, m_address);
      m_subscriptionModificationApiImpl =
          std::make_shared<SubscriptionModificationApiImpl>(
              m_router, udm_app_inst, m_address);
      m_traceConfigurationDataRetrievalApiImpl =
          std::make_shared<TraceConfigurationDataRetrievalApiImpl>(
              m_router, udm_app_inst, m_address);
      m_uEContextInSMFDataRetrievalApiImpl =
          std::make_shared<UEContextInSMFDataRetrievalApiImpl>(
              m_router, udm_app_inst, m_address);
      m_uEContextInSMSFDataRetrievalApiImpl =
          std::make_shared<UEContextInSMSFDataRetrievalApiImpl>(
              m_router, udm_app_inst, m_address);
      m_sMFSmfRegistrationApiImpl = std::make_shared<SMFSmfRegistrationApiImpl>(
          m_router, udm_app_inst, m_address);
      m_aMFRegistrationFor3GPPAccessApiImpl =
          std::make_shared<AMFRegistrationFor3GPPAccessApiImpl>(
              m_router, udm_app_inst, m_address);
      m_confirmAuthApiImpl =
          std::make_shared<ConfirmAuthApiImpl>(m_router, udm_app_inst, m_address);
      m_deleteAuthApiImpl =
          std::make_shared<DeleteAuthApiImpl>(m_router, udm_app_inst, m_address);
      m_generateAuthDataApiImpl = std::make_shared<GenerateAuthDataApiImpl>(
          m_router, udm_app_inst, m_address);
    }
    void init(size_t thr = 1);
    void start();
    void shutdown();
  
   private:
    std::shared_ptr<Pistache::Http::Endpoint> m_httpEndpoint;
    std::shared_ptr<Pistache::Rest::Router> m_router;
  
    std::shared_ptr<AccessAndMobilitySubscriptionDataRetrievalApiImpl>
        m_accessAndMobilitySubscriptionDataRetrievalApiImpl;
    std::shared_ptr<GPSIToSUPITranslationApiImpl> m_gPSIToSUPITranslationApiImpl;
    std::shared_ptr<GroupIdentifiersApiImpl> m_groupIdentifiersApiImpl;
    std::shared_ptr<ProvidingAcknowledgementOfSteeringOfRoamingApiImpl>
        m_providingAcknowledgementOfSteeringOfRoamingApiImpl;
    std::shared_ptr<ProvidingAcknowledgementOfUEParametersUpdateApiImpl>
        m_providingAcknowledgementOfUEParametersUpdateApiImpl;
    std::shared_ptr<RetrievalOfMultipleDataSetsApiImpl>
        m_retrievalOfMultipleDataSetsApiImpl;
    std::shared_ptr<RetrievalOfSharedDataApiImpl> m_retrievalOfSharedDataApiImpl;
    std::shared_ptr<SMFSelectionSubscriptionDataRetrievalApiImpl>
        m_sMFSelectionSubscriptionDataRetrievalApiImpl;
    std::shared_ptr<SMSManagementSubscriptionDataRetrievalApiImpl>
        m_sMSManagementSubscriptionDataRetrievalApiImpl;
    std::shared_ptr<SMSSubscriptionDataRetrievalApiImpl>
        m_sMSSubscriptionDataRetrievalApiImpl;
    std::shared_ptr<SessionManagementSubscriptionDataRetrievalApiImpl>
        m_sessionManagementSubscriptionDataRetrievalApiImpl;
    std::shared_ptr<SliceSelectionSubscriptionDataRetrievalApiImpl>
        m_sliceSelectionSubscriptionDataRetrievalApiImpl;
    std::shared_ptr<SubscriptionCreationApiImpl> m_subscriptionCreationApiImpl;
    std::shared_ptr<SubscriptionCreationForSharedDataApiImpl>
        m_subscriptionCreationForSharedDataApiImpl;
    std::shared_ptr<SubscriptionDeletionApiImpl> m_subscriptionDeletionApiImpl;
    std::shared_ptr<SubscriptionDeletionForSharedDataApiImpl>
        m_subscriptionDeletionForSharedDataApiImpl;
    std::shared_ptr<SubscriptionModificationApiImpl>
        m_subscriptionModificationApiImpl;
    std::shared_ptr<TraceConfigurationDataRetrievalApiImpl>
        m_traceConfigurationDataRetrievalApiImpl;
    std::shared_ptr<UEContextInSMFDataRetrievalApiImpl>
        m_uEContextInSMFDataRetrievalApiImpl;
    std::shared_ptr<UEContextInSMSFDataRetrievalApiImpl>
        m_uEContextInSMSFDataRetrievalApiImpl;
    std::shared_ptr<ConfirmAuthApiImpl> m_confirmAuthApiImpl;
    std::shared_ptr<DeleteAuthApiImpl> m_deleteAuthApiImpl;
    std::shared_ptr<GenerateAuthDataApiImpl> m_generateAuthDataApiImpl;
    std::shared_ptr<SMFSmfRegistrationApiImpl> m_sMFSmfRegistrationApiImpl;
    std::shared_ptr<AMFRegistrationFor3GPPAccessApiImpl>
        m_aMFRegistrationFor3GPPAccessApiImpl;
  
    std::string m_address;
  };
  
  #endif
  