- while(i < num_retries){
-
- // Need to handle differently depending on whether message
- // is for A1 (determined by type) or non-A1.
- // For now, A1 requires we bypass the routing table and send
- // directly back to originator using rmr_rts_msg rather than
- // over the bus
-
- if (unlikely(rmr_message->mtype == DC_ADM_INT_CONTROL_ACK || rmr_message->mtype == DC_ADM_GET_POLICY_ACK)){
- rmr_message = rmr_rts_msg(rmr_context, rmr_message);
- }
- else{
- rmr_message->state = 0; // fix for nng
- rmr_message = rmr_send_msg(rmr_context, rmr_message);
- }
- attempts ++;
-
- if (! rmr_message){
- // CRITICAL error. break out of loop
- std::string identifier = __FILE__ + std::string(", Line: ") + std::to_string(__LINE__) ;
- std::string error_string = identifier + " rmr_send returned NULL";
- mdclog_write(MDCLOG_ERR, error_string.c_str(), "");
- break;
- }
- else if (rmr_message->state == RMR_OK){
- send_ok = true;
- break;
- }
-
- else if(rmr_message->state == RMR_ERR_RETRY){
- i++;
- fails++;
- }
- else{
- mdclog_write(MDCLOG_ERR, "Error : %s, %d. Unable to transmit RMR message. RMR state = %d, %s\n", __FILE__, __LINE__, rmr_message->state, strerror(errno));
- break;
- }
-
+ if (unlikely(rmr_message->mtype == A1_POLICY_RESP)){
+ // for a1 messages we use send in high reliability mode and RTS
+ send_ok = Send(rmr_message, HIGH_RELIABILITY, RTS);
+ }
+ else{
+ rmr_message->state = 0; // fix for nng
+ send_ok = Send(rmr_message);