X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fxapp.hpp;fp=src%2Fxapp.hpp;h=680db1b848021a108bdd1346de2b98a26433e132;hb=b85024cd183a527cd8d61353637850cb6d30cf36;hp=bcfff5b2d4a9e9af80a0e2ac43bc7e920d85aadd;hpb=d63f834656922171ffa04347e34c7bce8a0d41be;p=ric-app%2Fhw.git diff --git a/src/xapp.hpp b/src/xapp.hpp index bcfff5b..680db1b 100644 --- a/src/xapp.hpp +++ b/src/xapp.hpp @@ -32,46 +32,67 @@ #include #include #include +#include +#include #include "xapp_rmr.hpp" #include "xapp_sdl.hpp" #include "rapidjson/writer.h" - +#include "rapidjson/document.h" #include "msgs_proc.hpp" #include "subs_mgmt.hpp" #include "xapp_config.hpp" -//#include "rnib/rnibreader.h" - - +extern "C" { +#include "rnib/rnibreader.h" +} using namespace std; using namespace std::placeholders; +using namespace rapidjson; + +using callback_type = std::function< void(rmr_mbuf_t*,bool*) > ; class Xapp{ public: Xapp(XappSettings &, XappRmr &); - Xapp(XappSettings &, XappRmr &, XappSDL &); ~Xapp(void); void startup(); void shutdown(void); - - void start_xapp_receiver(); + void init(void); + void start_xapp_receiver(XappMsgHandler &); + void sdl_data(void); Xapp(Xapp const &)=delete; Xapp& operator=(Xapp const &) = delete; + template + void register_handler(FunctionObject fn){ + _callbacks.emplace_back(fn); + } + + void callback_handler(){ + + } + + void set_rnib_gnblist(void); + //getters/setters. + std::vector get_rnib_gnblist(){ return rnib_gnblist; } + private: void startup_subscribe_requests(void ); void shutdown_subscribe_deletes(void); void startup_get_policies(void ); - void sdl_data(void); - void rnib_data(void); + XappRmr * rmr_ref; XappSettings * config_ref; - XappSDL *sdl_ref = NULL; + std::mutex *xapp_mutex; std::vector xapp_rcv_thread; + std::vector rnib_gnblist; + + std::vector _callbacks; + };