You are on page 1of 4

Proposed changes in IS41 Module *****************************RequestHander.

cpp********************************** >>>>>>Mesaage type, opcode and flow MessageType = M_HLR_QUERY Opcode : = O_HLR_REQ Module::Request Handler Currently for taking a outhandler thread from thread pool request handler is checking for opcode( see below switch case), its necessary to check now message type and if msg type is sms_msg or hlr query msg. For both of these message we will take a new outhandler thread from TPM.

RequestHander::run()
Request Handler is fetching the incoming messages from core-app by calling getMsg fuction. l_ret_val = getMsg(&m_qmsg); // No change switch(m_qmsg.msg_body.sms_msg.opcode) change is required to check for HLR_QUERY msg , currently opcode of sms_msg is being used to take a decision of taking a new outhandler thread from TPM. //used only for logging purpose U64 local_sub_id = atol((char *) (m_qmsg.msg_body.sms_msg.sms_body[0].sms_info.sms_data.dest_addr.addr.dir_no.digits)); No proper handling has been done in case total number of outhander threads exceeds the upper limit. ITC_ERR_IS41_THREAD_LIMIT_EXCEEDED; ( Only filled the a local Qmsg but didn't do anything with that, this will lead Time-Out at Core App. /*********************************OutHandler.cpp********************************* Call Flow:: We will call HandleNewMessage() on receiving a new sms_msg or hlr_query_msg, if msg_type is hlr_query_msg then HandlerNewMessage will in turn call HandleHlrQuery and this function will take care of HLR QUERY messages for HUB implementation. HandleNewMessage() will call a new function HandleHlrQuery() this function will be responsible for filling up hlr_query_msg( A new message for HLR QUERY ) will call getInterfaceInfo() will make current interface = INTF_IS41_HLR will call sendSMSReq() ( Changes are doable inside the sendSMSReq() ) ( will fill destination addr, MDN, tele service id if present, set the notification flag also if notification is allowed. sendSMSReq() in turn call sendNwMsg() there is no change wrt to msg_type =sms_msg sendNwMsg() in turn calls to IS41DummySend(&(mp_out_data->m_out_msg)) function. mp_state = OgSendMsgAck::getInstance(); /********************************************************************************

/*********************************OutHandler.cpp********************************* Messages from SENDER Case 1: Sender Time Out p_out_handler->setDialogFlag(IS41_DIALOG_DONE); p_out_handler->sendSMSAck(IS41_LOCAL_ERROR, INVALID_OPCODE); p_out_handler->networkCleanUp(); Case 2: ACK from Sender handleSendMsgAck() this could be SUCCESS/ FAILURE Case : Failure Failure cases are being handled into sendSMSAck(IS41_LOCAL_ERROR, mp_out_data->m_in_msg.msg_body.sender_ack. opcode); selfCleanUp(); we would like to call a new function sendHLRAck( Error, opcode ) due to so many changes inside the sendSMSAck(). sendHLRAck(IS41_LOCAL_ERROR, mp_out_data->m_in_msg.msg_body.sender_ack. opcode); selfCleanUp(); Ack msg will be filled up with result Failure. Case : successful response from sender for HLR_REQ HandleSendMsgAck() will be called with opcode o_send_sms_req By checking input message type we handle the (from m_new_msg.) 1. mp_rc_agent->updateEngRep() 2. Register a timer for message being sent to network if (timer fails ) sendHLRAck(LOCAL_ERROR, O_HLR_REQ) 3. state= OgNwMsgAck currently for SMS_REQ m_sms_req_timer is being used we need. Do we need another timer for HLR_REQ??

/********************************************************************************/ We would like to introduce a new function about which we talked earlier, sendHLRAck(Errors, opcode) will handle local error, DCS error, network error, timeout and success case. This function will work same as sendSMSAck(Error, opcode). Errors will be handled into sendHLRAck() are: IS41_LOCAL_ERROR IS41_DCS_ERROR IS41_NETWORK_ERROR { O_HLR_REQ_RESP { ITC_ERR_FORWARD } O_CLEAR_NW { O_TC_NOTICE O_TC_UABORT O_TC_PABORT O_TC_UREJECT O_TC_LREJECT O_TC_UERR } IS41_TIMEOUT_ERROR

For Successful response from HLR for O_HLR_REQ Currently for in case of SUCCESS full response from the network for SMS REQ, we are not sending any message to core app, we are trying to send the SMS to MSC. But in case of HLR we need to send a positive ack to core app with desired parameters. These fields will be filled in while sending HLR_ACK to CA flag for bit EXTN_SM_RELAY Received correlationid. MDN MSC_id, Tele_service id if it came from CA. Notification flag if?? mp_out_data->m_sms_ack.tl_hdr.source_addr = m_self_addr; mp_out_data->m_sms_ack.tl_hdr.dest_addr = mp_out_data->m_new_msg.tl_hdr.source_addr; mp_out_data->m_sms_ack.msg_typemsg_type = M_HLR_QUERY; mp_out_data->m_sms_ack.source_type = S_IS41_MOD; mp_out_data->m_sms_ack.msg_body.sms_msg.reply_address = m_self_addr;

mp_out_data->m_sms_ack.msg_body.sms_msg.opcode = O_HLR_ACK; mp_out_data->m_sms_ack.msg_body.sms_msg.no_of_messages = mp_out_data>m_new_msg.msg_body.sms_msg.no_of_messages; ??Do we need this??

You might also like