/* # ================================================================================== # Copyright (c) 2020 HCL Technologies Limited. # # Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 # # 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. # ================================================================================== */ #include "xapp.hpp" void signalHandler( int signum ) { cout << "Interrupt signal (" << signum << ") received.\n"; exit(signum); } int main(int argc, char *argv[]){ // Get the thread id std::thread::id my_id = std::this_thread::get_id(); std::stringstream thread_id; std::stringstream ss; thread_id << my_id; mdclog_write(MDCLOG_INFO, "Starting thread %s", thread_id.str().c_str()); //get configuration XappSettings config; //change the priority depending upon application requirement config.loadDefaultSettings(); config.loadEnvVarSettings(); config.loadCmdlineSettings(argc, argv); //Register signal handler to stop signal(SIGINT, signalHandler); signal(SIGTERM, signalHandler); //getting the listening port and xapp name info std::string port = config[XappSettings::SettingName::BOUNCER_PORT]; std::string name = config[XappSettings::SettingName::XAPP_NAME]; //initialize rmr std::unique_ptr rmr = std::make_unique(port); rmr->xapp_rmr_init(true); //Create Subscription Handler if Xapp deals with Subscription. //std::unique_ptr sub_handler = std::make_unique(); SubscriptionHandler sub_handler; //create Bouncer Xapp Instance. std::unique_ptr b_xapp; b_xapp = std::make_unique(std::ref(config),std::ref(*rmr)); mdclog_write(MDCLOG_INFO, "Created Bouncer Xapp Instance"); //Startup E2 subscription b_xapp->startup(sub_handler); sleep(10); //start listener threads and register message handlers. int num_threads = std::stoi(config[XappSettings::SettingName::THREADS]); mdclog_write(MDCLOG_INFO, "Starting Listener Threads. Number of Workers = %d", num_threads); std::unique_ptr mp_handler = std::make_unique(config[XappSettings::SettingName::XAPP_ID], sub_handler); b_xapp->start_xapp_receiver(std::ref(*mp_handler)); sleep(1); while(1){ sleep(1); } return 0; }