bool XappMsgHandler::a1_policy_handler(char * message, int *message_len, a1_policy_helper &helper){
rapidjson::Document doc;
- if (doc.Parse(message).HasParseError()){
+ if (doc.Parse<kParseStopWhenDoneFlag>(message).HasParseError()){
mdclog_write(MDCLOG_ERR, "Error: %s, %d :: Could not decode A1 JSON message %s\n", __FILE__, __LINE__, message);
return false;
}
}
a1_policy_helper helper;
bool res=false;
+ std::string str_meid;
switch(message->mtype){
//need to fix the health check.
case (RIC_HEALTH_CHECK_REQ):
case (RIC_SUB_RESP):
mdclog_write(MDCLOG_INFO, "Received subscription message of type = %d", message->mtype);
unsigned char *me_id;
- rmr_get_meid(message, me_id);
+ if( (me_id = (unsigned char *) malloc( sizeof( unsigned char ) * RMR_MAX_MEID )) == NULL ) {
+ mdclog_write(MDCLOG_ERR, "Error : %s, %d : malloc failed for me_id", __FILE__, __LINE__);
+ me_id = rmr_get_meid(message, NULL);
+ } else {
+ rmr_get_meid(message, me_id);
+ }
mdclog_write(MDCLOG_INFO,"RMR Received MEID: %s",me_id);
-
+ str_meid.insert(0,(char*)me_id);
if(_ref_sub_handler !=NULL){
- _ref_sub_handler->manage_subscription_response(message->mtype, me_id);
+ _ref_sub_handler->manage_subscription_response(message->mtype, str_meid);
} else {
mdclog_write(MDCLOG_ERR, " Error :: %s, %d : Subscription handler not assigned in message processor !", __FILE__, __LINE__);
}
*resend = false;
+ if (me_id != NULL) {
+ mdclog_write(MDCLOG_INFO, "Free RMR Received MEID memory: %s(0x%x)", me_id, me_id);
+ free(me_id);
+ }
break;
case A1_POLICY_REQ:
if (search != status_table.end()){
status_table.erase(search);
- mdclog_write(MDCLOG_INFO,"Entry for Transaction ID deleted: %d",id);
+ mdclog_write(MDCLOG_INFO,"Entry for Transaction ID deleted: %s",id.c_str());
return true;
}
- mdclog_write(MDCLOG_INFO,"Entry not found in SubscriptionHandler for Transaction ID: %d",id);
+ mdclog_write(MDCLOG_INFO,"Entry not found in SubscriptionHandler for Transaction ID: %s",id.c_str());
return false;
};
#include <unordered_map>
#include <chrono>
#include <tuple>
+#include <string>
#include "../xapp-asn/e2ap/subscription_delete_request.hpp"
#include "../xapp-asn/e2ap/subscription_delete_response.hpp"
request_duplicate
}Subscription_Status_Types;
-using transaction_identifier = unsigned char*;
+using transaction_identifier = std::string;
using transaction_status = Subscription_Status_Types;
class SubscriptionHandler {
if (!flg){
// clear state
delete_request_entry(rmr_trans_id);
- mdclog_write(MDCLOG_ERR, "%s, %d :: Error transmitting subscription request %s", __FILE__, __LINE__, rmr_trans_id );
+ mdclog_write(MDCLOG_ERR, "%s, %d :: Error transmitting subscription request %s", __FILE__, __LINE__, rmr_trans_id.c_str() );
return SUBSCR_ERR_TX;
} else {
- mdclog_write(MDCLOG_INFO, "%s, %d :: Transmitted subscription request for trans_id %s", __FILE__, __LINE__, rmr_trans_id );
+ mdclog_write(MDCLOG_INFO, "%s, %d :: Transmitted subscription request for trans_id %s", __FILE__, __LINE__, rmr_trans_id.c_str() );
add_transmitter_entry(rmr_trans_id, tx);
}
int status = get_request_status(rmr_trans_id);
if (status == request_success){
- mdclog_write(MDCLOG_INFO, "Successfully subscribed for request for trans_id %s", rmr_trans_id);
+ mdclog_write(MDCLOG_INFO, "Successfully subscribed for request for trans_id %s", rmr_trans_id.c_str());
res = SUBSCR_SUCCESS;
break;
}
if ( f > _time_out){
- mdclog_write(MDCLOG_ERR, "%s, %d:: Subscription request with transaction id %s timed out waiting for response ", __FILE__, __LINE__, rmr_trans_id);
+ mdclog_write(MDCLOG_ERR, "%s, %d:: Subscription request with transaction id %s timed out waiting for response ", __FILE__, __LINE__, rmr_trans_id.c_str());
- //res = SUBSCR_ERR_TIMEOUT;
+ res = SUBSCR_ERR_TIMEOUT;
//sunny side scenario. assuming subscription response is received.
- res = SUBSCR_SUCCESS;
+ //res = SUBSCR_SUCCESS;
break;
}
else{
- mdclog_write(MDCLOG_INFO, "Subscription request with transaction id %s Waiting for response....", rmr_trans_id);
+ mdclog_write(MDCLOG_INFO, "Subscription request with transaction id %s Waiting for response....", rmr_trans_id.c_str());
continue;
}
mdclog_write(MDCLOG_INFO,"Sending subscription in file= %s, line=%d for MEID %s",__FILE__,__LINE__, meid);
auto transmitter = std::bind(&XappRmr::xapp_rmr_send,rmr_ref, &rmr_header, (void*)buf );//(void*)data);
- int result = subhandler_ref->manage_subscription_request(meid, transmitter);
- if(result){
- mdclog_write(MDCLOG_INFO,"Subscription SUCCESSFUL in file= %s, line=%d for MEID %s",__FILE__,__LINE__, meid);
-
+ int result = subhandler_ref->manage_subscription_request(gnblist[i], transmitter);
+ if(result==SUBSCR_SUCCESS){
+ mdclog_write(MDCLOG_INFO,"Subscription SUCCESSFUL in file= %s, line=%d for MEID %s",__FILE__,__LINE__, meid);
+ }
+ else {
+ mdclog_write(MDCLOG_ERR,"Subscription FAILED in file= %s, line=%d for MEID %s",__FILE__,__LINE__, meid);
}
}
Document doc;
- ParseResult parseJson = doc.Parse((char*)result);
+ ParseResult parseJson = doc.Parse<kParseStopWhenDoneFlag>((char*)result);
if (!parseJson) {
std::cerr << "JSON parse error: %s (%u)", GetParseErrorFunc(parseJson.Code());
return;