📄 cmpp2mo.java
字号:
package com.khan.sms.cmpp2control;
import com.khan.sms.cmpp2.*;
import com.khan.sms.*;
import com.khan.util.*;
import com.khan.db.DBPoolCon;
import com.khan.datetime.SMPTime;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class Cmpp2MO implements Runnable {
static boolean flag = true;
RecvQueue rq = RecvQueue.getInstance();
SendQueue sq = SendQueue.getInstance();
CmppParam cp = CmppParam.getInstance();
public Cmpp2MO() {
common.Assert("debug:Cmpp2MO处理线程建立");
}
public static void stopThread() {
flag = false;
}
//0 DELIVRD, 1 EXPIRED, 2 DELETED, 3 UNDELIV, 4 ACCEPTD, 5 UNKNOWN, 6 REJECTD
private int parseStatusReport(String status) {
int result = 5;
if (status != null) {
return result;
}
status = status.trim();
if (status.equals("DELIVRD")) {
result = 0;
} else if (status.equals("EXPIRED")) {
result = 1;
} else if (status.equals("DELETED")) {
result = 2;
} else if (status.equals("UNDELIV")) {
result = 3;
} else if (status.equals("ACCEPTD")) {
result = 4;
} else if (status.equals("REJECTD")) {
result = 6;
}
return result;
}
private void processMO(Cmpp2Data data) {
int command = data.CommandID;
if (command == Cmpp2Command.CMPP_DELIVER) {
Cmpp2Deliver cd = (Cmpp2Deliver) data;
if (cd.IsReport == 0) { //普通MO, 插入上行表
DBPoolCon dbp = null;
String sqlstr = "Insert into MO(Msg_ID, OrgAddr, "
+ "DestAddr, ServiceID, "
+ "MsgFmt, UserData_Len, "
+ "UserData, PID, "
+ "UDHI, SeqID "
+ ") "
+ "Values('" + cd.Msg_ID.toString() + "','" + cd.Src_Terminal + "',"
+ "'" + cd.Dest_ID + "','" + cd.Service_ID + "',"
+ " " + cd.Msg_FMT + "," + cd.Msg_Length + ", "
+ "'" + cd.Msg_Content + "', " + cd.Tp_PID + ","
+ " " + cd.Tp_UDHI + ", '" + cd.getSeqID() + "')";
try {
dbp = cp.Cmpp_DB.get();
common.PoolExcuteSql(dbp, sqlstr);
} finally {
cp.Cmpp_DB.release(dbp);
}
cp.LogMain.logOut(cd.toString());
} else { //状态报告
DBPoolCon dbp = cp.Cmpp_DB.get();
String sqlstr = "Update Mt Set SendResult = 1,"
+ "ReportStatus=" + parseStatusReport(cd.Statu_Report.Stat)
+ " Where RespMsgID='" + cd.Statu_Report.Msg_Id.toString() + "'";
try {
common.PoolExcuteSql(dbp, sqlstr);
//common.Assert(sqlstr); //test
} finally {
cp.Cmpp_DB.release(dbp);
}
cp.LogMain.logOut(cd.Statu_Report.toString());
}
} else if (command == Cmpp2Command.CMPP_SUBMIT_RESP) {
Cmpp2SubmitResp csr = (Cmpp2SubmitResp) data;
DBPoolCon dbp = null;
String sqlstr = "Update Mt Set SendResult = " + csr.Result
+ ", SendTime = " + SMPTime.getNow()
+ ", RespMsgID = '" + csr.Msg_Id + "'"
+ " Where ID=" + csr.getSeqID();
try {
dbp = cp.Cmpp_DB.get();
common.PoolExcuteSql(dbp, sqlstr);
//common.Assert(sqlstr);//test
} finally {
cp.Cmpp_DB.release(dbp);
}
} //else if (command == Cmpp2Command.CMPP_TERMINATE_RESP) {
//Cmpp2TerminateResp ctr = (Cmpp2TerminateResp) data.decodeCmpp();
//Cmpp2Login.connected = false;
//}
}
public void run() {
common.Assert("debug:Cmpp2MO线程启动!");
common.sleep(cp.SEND_SLEEP);
try {
while (flag) {
Cmpp2Data data = rq.get();
if (data != null) {
processMO(data);
}
}
if (!flag) { //确保收到退出指令后,MO队列中的数据能被处理
Cmpp2Data data = rq.get();
//System.out.println("Debug:MO CommondID"+MsgID.toHexString(MsgID.toByteArray(data.CommandID)));
while (data != null) {
processMO(data);
data = rq.get();
}
}
} finally {
common.Assert("debug:Cmpp2MO线程停止!");
}
}
protected void finalize() {
common.Assert("debug:Cmpp2MO线程被注销!");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -