Adding Bouncer code for RIC-Benchmarking
[ric-app/bouncer.git] / Bouncer / src / b_xapp_main.cc
diff --git a/Bouncer/src/b_xapp_main.cc b/Bouncer/src/b_xapp_main.cc
new file mode 100644 (file)
index 0000000..42d2d3e
--- /dev/null
@@ -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<XappRmr> rmr = std::make_unique<XappRmr>(port);
+       rmr->xapp_rmr_init(true);
+
+
+       //Create Subscription Handler if Xapp deals with Subscription.
+       //std::unique_ptr<SubscriptionHandler> sub_handler = std::make_unique<SubscriptionHandler>();
+
+       SubscriptionHandler sub_handler;
+
+       //create Bouncer Xapp Instance.
+       std::unique_ptr<Xapp> b_xapp;
+       b_xapp = std::make_unique<Xapp>(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<XappMsgHandler> mp_handler = std::make_unique<XappMsgHandler>(config[XappSettings::SettingName::XAPP_ID], sub_handler);
+
+       b_xapp->start_xapp_receiver(std::ref(*mp_handler));
+
+       sleep(1);
+
+
+
+       while(1){
+                               sleep(1);
+                        }
+
+       return 0;
+}
+
+
+