public void handleInput() { SGIPPacket packet = (SGIPPacket) m_gateway.receive(); if (packet == null) return; if (packet.command_id == 0x80000003) cmpp_input = unwrapSubmitResponse(packet); else if (packet.command_id == 4) cmpp_input = unwrapDeliver(packet); else if (packet.command_id == 5) cmpp_input = unwrapReport(packet); else if (packet.command_id == 17) cmpp_input = unwrapUserReport(packet); m_gateway.statistic(cmpp_input); packet.empty(); packet = null; }
public void handleOutput() { CMPPPacket packet = (CMPPPacket) m_database.m_output.pop(m_gateway.m_strName); if (packet == null) return; m_gateway.statistic(packet); if (packet.command_id == 4) sgip_output = wrapSubmit((CMPPSubmit) packet); else if (packet.command_id == 0x80000005) sgip_output = wrapDeliverResponse((CMPPDeliverResponse) packet); packet.empty(); packet = null; }
public CMPPDeliver unwrapReport(SGIPPacket packet) { try { SGIPReport sgip_report = new SGIPReport(packet); sgip_report.unwrap(); SGIPReportResponse response = new SGIPReportResponse(sgip_report.sequence_id); response.gateway_name = sgip_report.gateway_name; response.sequence_id = sgip_report.sequence_id; response.node_id = sgip_report.node_id; response.time_stamp = sgip_report.time_stamp; response.result = 0; response.session_id = sgip_report.session_id; response.wrap(); for (; !m_gateway.send(response); Engine.nap()) ; if (!sgip_report.isValid()) return null; CMPPDeliver deliver = new CMPPDeliver(packet.sequence_id); deliver.gateway_name = sgip_report.gateway_name; deliver.session_id = sgip_report.session_id; deliver.guid = sgip_report.guid; long msg_id = (long) sgip_report.node_id & 0xfffffffffL; msg_id <<= 32; msg_id |= (long) sgip_report.time_stamp & 0xffffffffL; deliver.msg_id = msg_id; deliver.registered_delivery = 1; deliver.service_id = "REPORT"; msg_id = (long) sgip_report.packet_time_stamp & 0xfffffffffL; msg_id <<= 32; msg_id |= (long) sgip_report.packet_sequence_id & 0xffffffffL; deliver.status_report.msg_id = msg_id; deliver.status_report.submit_time = Utility.get_time_stamp(sgip_report.time_stamp); if (sgip_report.state == 0) deliver.status_report.status = "DELIVRD"; else if (sgip_report.state == 1) deliver.status_report.status = "WAITING"; else if (sgip_report.state == 2) deliver.status_report.status = "FAILED"; else deliver.status_report.status = "UNKNOWN"; deliver.destination_id = sgip_report.user_number; deliver.status_report.smsc_sequence = sgip_report.error_code; return deliver; } catch (Exception e) { Log.log(e); } Log.log( "SGIPExchanger(" + m_nID + "," + m_gateway.m_strName + ").unwrapReport : unexpected exit !", 0x2000000000000004L); return null; }
public CMPPDeliver unwrapDeliver(SGIPPacket packet) { try { SGIPDeliver sgip_deliver = new SGIPDeliver(packet); sgip_deliver.unwrap(); SGIPDeliverResponse response = new SGIPDeliverResponse(sgip_deliver.sequence_id); response.gateway_name = sgip_deliver.gateway_name; response.sequence_id = sgip_deliver.sequence_id; response.node_id = sgip_deliver.node_id; response.time_stamp = sgip_deliver.time_stamp; response.result = (byte) sgip_deliver.checkValid(); response.session_id = sgip_deliver.session_id; response.wrap(); for (; !m_gateway.send(response); Engine.nap()) ; if (sgip_deliver.message_coding == 8) reencode_message_content(sgip_deliver); CMPPDeliver deliver = new CMPPDeliver(packet.sequence_id); deliver.gateway_name = sgip_deliver.gateway_name; deliver.session_id = sgip_deliver.session_id; deliver.guid = sgip_deliver.guid; long msg_id = (long) sgip_deliver.node_id & 0xfffffffffL; msg_id <<= 32; msg_id |= (long) sgip_deliver.time_stamp & 0xffffffffL; deliver.msg_id = msg_id; deliver.registered_delivery = 0; deliver.destination_id = sgip_deliver.sp_number; deliver.src_terminal_id = sgip_deliver.user_number; deliver.tp_pid = sgip_deliver.tp_pid; deliver.tp_udhi = sgip_deliver.tp_udhi; deliver.msg_fmt = sgip_deliver.message_coding; deliver.msg_length = sgip_deliver.message_length; deliver.msg_content = sgip_deliver.message_content; return deliver; } catch (Exception e) { Log.log(e); } Log.log( "SGIPExchanger(" + m_nID + "," + m_gateway.m_strName + ").unwrapDeliver : unexpected exit !", 0x2000000000000004L); return null; }
public void run() { try { Log.log( "SGIPExchanger(" + m_nID + "," + m_gateway.m_strName + ").run : thread startup !", 4L); m_nStatus = 1; for (; isRunning(); Engine.nap()) { if (m_gateway.isStopped()) { Log.log( "SGIPExchanger(" + m_nID + "," + m_gateway.m_strName + ").run : gateway is stopped !", 0x2000000000000004L); break; } if (sgip_output == null) handleOutput(); toGateway(); if (m_database.isStopped()) { Log.log( "SGIPExchanger(" + m_nID + "," + m_gateway.m_strName + ").run : database is stopped !", 0x2000000000000004L); break; } if (cmpp_input == null) handleInput(); toDatabase(); } } catch (Exception e) { Log.log(e); Log.log( "SGIPExchanger(" + m_nID + "," + m_gateway.m_strName + ").run : unexpected exit !", 0x2000000000000004L); } m_nStatus = 3; Log.log("SGIPExchanger(" + m_nID + "," + m_gateway.m_strName + ").run : thread stopped !", 4L); }
public void toGateway() { if (sgip_output != null && m_gateway.send(sgip_output)) sgip_output = null; }