--- /dev/null
+/*
+# ==================================================================================
+# 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;
+}
+
+
+