X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fmessage_processor_class.cc;h=1cdc0d735231e0734c59b96dfb9436325c6ba9dc;hb=8a198a45af798bc7c9525a2663d397377d01ab01;hp=a5a96851d070ed64c03e4446f012bdd128911fdd;hpb=57435fef9be52525f7bdcc5b6f0cff03ebbf8534;p=ric-app%2Fadmin.git diff --git a/src/message_processor_class.cc b/src/message_processor_class.cc index a5a9685..1cdc0d7 100644 --- a/src/message_processor_class.cc +++ b/src/message_processor_class.cc @@ -23,7 +23,7 @@ int verbose_flag = 0; -message_processor::message_processor(int mode, bool report_mode, size_t buffer_length, size_t reporting_interval): _ref_sub_handler(NULL), _ref_protector(NULL), _ref_policy_handler(NULL), _num_messages(0), current_index (0), num_indications(0), num_err_indications(0){ +message_processor::message_processor(int mode, bool report_mode, size_t buffer_length): _ref_sub_handler(NULL), _ref_protector(NULL), _ref_policy_handler(NULL), _num_messages(0), current_index (0), num_indications(0), num_err_indications(0){ processing_level = mode; report_mode_only = report_mode; _buffer_size = buffer_length; @@ -62,8 +62,6 @@ bool message_processor::operator()(rmr_mbuf_t *message){ _num_messages ++; std::string response; - //FILE *pfile; - //std::string filename = "/opt/out/e2ap_" + std::to_string(_num_messages) + ".per"; state = NO_ERROR; mdclog_write(MDCLOG_DEBUG, "Received RMR message of type %d and size %d\n", message->mtype, message->len); @@ -75,8 +73,7 @@ bool message_processor::operator()(rmr_mbuf_t *message){ return false; } - - // main message processing code + // routing based on message type switch(message->mtype){ case RIC_INDICATION: @@ -87,10 +84,6 @@ bool message_processor::operator()(rmr_mbuf_t *message){ break; } - //pfile = fopen(filename.c_str(), "wb"); - //fwrite(message->payload, sizeof(char), message->len, pfile); - //fclose(pfile); - e2ap_recv_pdu = 0; e2sm_header = 0; @@ -106,9 +99,11 @@ bool message_processor::operator()(rmr_mbuf_t *message){ mdclog_write(MDCLOG_ERR, "Error :: %s, %d :: Could not get fields from RICindication message\n", __FILE__, __LINE__); goto finished; } + //std::cout <<"+++++++++++++++++++++++ E2AP Indication ++++++++++++++++++++++++" << std::endl; //xer_fprint(stdout, &asn_DEF_E2N_E2AP_PDU, e2ap_recv_pdu); //std::cout <<"+++++++++++++++++++++++ E2AP Indication ++++++++++++++++++++++++" << std::endl; + } else{ num_err_indications ++; @@ -156,7 +151,7 @@ bool message_processor::operator()(rmr_mbuf_t *message){ // NOTE : We assume RICindicationMessage contains payload (not E2SM message) - // Send payload to plugin + // Send payload to protector plugin current_index = 0; remaining_buffer = _buffer_size; mdclog_write(MDCLOG_DEBUG, "Processing E2AP Indication message of size %lu\n", indication_data.indication_msg_size); @@ -218,7 +213,9 @@ bool message_processor::operator()(rmr_mbuf_t *message){ control_data.req_id = indication_data.req_id; control_data.req_seq_no = indication_data.req_seq_no; control_data.func_id = indication_data.func_id; - control_data.control_ack = 2; // no ack required + //control_data.control_ack = 0; // no ack required + control_data.call_process_id = indication_data.call_process_id; + control_data.call_process_id_size = indication_data.call_process_id_size; res = control_request_processor.encode_e2ap_control_request(message->payload, &mlen, control_data); if(likely(res)){ @@ -245,8 +242,11 @@ bool message_processor::operator()(rmr_mbuf_t *message){ case (RIC_SUB_FAILURE): case ( RIC_SUB_DEL_FAILURE ): if (_ref_sub_handler != NULL){ + // extract meid .. + unsigned char meid[32]; + rmr_get_meid(message, meid); mdclog_write(MDCLOG_INFO, "Received subscription message of type = %d", message->mtype); - _ref_sub_handler->Response(message->mtype, message->payload, message->len); + _ref_sub_handler->Response(message->mtype, message->payload, message->len, (const char *)meid); } else{ state = MISSING_HANDLER_ERROR; @@ -256,16 +256,16 @@ bool message_processor::operator()(rmr_mbuf_t *message){ break; - case DC_ADM_INT_CONTROL: + case A1_POLICY_REQ: { if(_ref_policy_handler != NULL){ // Need to apply config. Since config may need to be // applied across all threads, we do a callback to the parent thread. // wait for config to be applied and then send response - _ref_policy_handler(DC_ADM_INT_CONTROL, (const char *) message->payload, message->len, response, true); + _ref_policy_handler(A1_POLICY_REQ, (const char *) message->payload, message->len, response, true); std::memcpy( (char *) message->payload, response.c_str(), response.length()); message->len = response.length(); - message->mtype = DC_ADM_INT_CONTROL_ACK; + message->mtype = A1_POLICY_RESP; send_msg = true; } else{ @@ -275,21 +275,6 @@ bool message_processor::operator()(rmr_mbuf_t *message){ } break; - case DC_ADM_GET_POLICY: - { - if(_ref_policy_handler != NULL){ - _ref_policy_handler(DC_ADM_GET_POLICY, (const char *) message->payload, message->len, response, false); - std::memcpy((char *)message->payload, response.c_str(), response.length()); - message->len = response.length(); - message->mtype = DC_ADM_GET_POLICY_ACK; - send_msg = true; - } - else{ - state = MISSING_HANDLER_ERROR; - mdclog_write(MDCLOG_ERR, "Error :: %s, %d :: Policy handler not assigned in message processor !", __FILE__, __LINE__); - } - } - break; default: mdclog_write(MDCLOG_ERR, "Error :: Unknown message type %d received from RMR", message->mtype);