X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=Bouncer%2Fsrc%2Fb_xapp_main.cc;fp=Bouncer%2Fsrc%2Fb_xapp_main.cc;h=42d2d3eaf98e5fed06644a61b5ee854ad21e055c;hb=ff20129c8f517cca6e0b4de6544ff64aebe7c171;hp=0000000000000000000000000000000000000000;hpb=35882dccfbc1b35af0e5704e14e0ecb9eba0f52a;p=ric-app%2Fbouncer.git diff --git a/Bouncer/src/b_xapp_main.cc b/Bouncer/src/b_xapp_main.cc new file mode 100644 index 0000000..42d2d3e --- /dev/null +++ b/Bouncer/src/b_xapp_main.cc @@ -0,0 +1,93 @@ +/* +# ================================================================================== +# 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; +} + + +