- bool res = true;
- E2N_E2AP_PDU_t *e2pdu = 0;
-
- asn_dec_rval_t rval;
-
- ASN_STRUCT_RESET(asn_DEF_E2N_E2AP_PDU, e2pdu);
-
- rval = asn_decode(0,ATS_ALIGNED_BASIC_PER, &asn_DEF_E2N_E2AP_PDU, (void**)&e2pdu, data_buf, data_size);
- switch(rval.code)
- {
- case RC_OK:
- //Extract Subscription Response Failure.
- asn_fprint(stdout, &asn_DEF_E2N_E2AP_PDU, e2pdu);
- break;
- case RC_WMORE:
- mdclog_write(MDCLOG_ERR, "RC_WMORE");
- res = false;
- break;
- case RC_FAIL:
- mdclog_write(MDCLOG_ERR, "RC_FAIL");
- res = false;
- break;
- default:
- break;
- }
- ASN_STRUCT_FREE(asn_DEF_E2N_E2AP_PDU, e2pdu);
- return res;
-
-}
-
-bool XappMsgHandler::decode_subscription_delete_response_failure(unsigned char* data_buf, size_t data_size){
-
- bool res = true;
- E2N_E2AP_PDU_t *e2pdu = 0;
-
- asn_dec_rval_t rval;
-
- ASN_STRUCT_RESET(asn_DEF_E2N_E2AP_PDU, e2pdu);
-
- rval = asn_decode(0,ATS_ALIGNED_BASIC_PER, &asn_DEF_E2N_E2AP_PDU, (void**)&e2pdu, data_buf, data_size);
- switch(rval.code)
- {
- case RC_OK:
- //Extract Subscription Delete Response Failure.
- asn_fprint(stdout, &asn_DEF_E2N_E2AP_PDU, e2pdu);
- break;
- case RC_WMORE:
- mdclog_write(MDCLOG_ERR, "RC_WMORE");
- res = false;
- break;
- case RC_FAIL:
- mdclog_write(MDCLOG_ERR, "RC_FAIL");
- res = false;
- break;
- default:
- break;
- }
- ASN_STRUCT_FREE(asn_DEF_E2N_E2AP_PDU, e2pdu);
- return res;
-
-}
-
-//For processing received messages.
-rmr_mbuf_t * XappMsgHandler::operator()(rmr_mbuf_t *message){
-
- if (message->len > MAX_RMR_RECV_SIZE){
- mdclog_write(MDCLOG_ERR, "Error : %s, %d, RMR message larger than %d. Ignoring ...", __FILE__, __LINE__, MAX_RMR_RECV_SIZE);
- return message;
- }
-
- switch(message->mtype){
- //need to fix the health check.
- case (RIC_HEALTH_CHECK_REQ):
- message->mtype = RIC_HEALTH_CHECK_RESP; // if we're here we are running and all is ok
- message->sub_id = -1;
- break;
-
- case (RIC_SUB_RESP):
- //Received Subscription Response Message
- decode_subscription_response(message->payload,message->len);
- message = NULL;
- break;
-
- case (RIC_SUB_DEL_RESP):
- decode_subscription_delete_response(message->payload,message->len);
- message = NULL;
- break;
-
- case (RIC_SUB_FAILURE):
- decode_subscription_response_failure(message->payload, message->len);
- message = NULL;
- break;
-
- case (RIC_SUB_DEL_FAILURE):
- decode_subscription_delete_response_failure(message->payload,message->len);
- message = NULL;
- break;
- // case A1_POLICY_REQ:
- // break;
-
-
- default:
- mdclog_write(MDCLOG_ERR, "Error :: Unknown message type %d received from RMR", message->mtype);
-
- }
+ case A1_POLICY_REQ:
+
+ mdclog_write(MDCLOG_INFO, "In Message Handler: Received A1_POLICY_REQ.");
+ helper.handler_id = xapp_id;
+
+ res = a1_policy_handler((char*)message->payload, &message->len, helper);
+ if(res){
+ message->mtype = A1_POLICY_RESP; // if we're here we are running and all is ok
+ message->sub_id = -1;
+ *resend = true;
+ }
+ break;
+ case RIC_INDICATION:
+
+ mdclog_write(MDCLOG_INFO, "Received Indication message of type = %d", message->mtype);
+ //pick the relevant decoding code from test_e2sm.h, section(E2SM, IndicationMessageDecode)
+ break;
+
+ default:
+ {
+ mdclog_write(MDCLOG_ERR, "Error :: Unknown message type %d received from RMR", message->mtype);
+ *resend = false;
+ }
+ }