📄 messagecount.java
字号:
package cn.com.ffcs.lbp;
import java.util.HashMap;
import java.util.Iterator;
import ffcs.logging.Log;
import ffcs.logging.LogFactory;
/**
* 计数类,在测试时候使用
* @author chenxin
* @version 1.0
* 2007-11-25 chenxin 修改发送UDP消息包,并加入模块编号
*/
public class MessageCount {
String title;
int moduleType;
int moduleNo;
//保存消息的增量值
HashMap[] msg = new HashMap[7];
//保存消息的名称
HashMap msgMap = new HashMap(30);
LogThread lt =null;
static final String STAT_FALG = "StatFlag";
private static Log log = LogFactory.getLog(MessageCount.class);
//流量统计发送UDP消息的开关
private boolean statFlag=true;
public MessageCount(String name,int type) {
title = name;
moduleType=type;
for (int i = 0; i < msg.length; i++) {
msg[i] = new HashMap(17);
}
lt = new LogThread();
try {
/*destHost = Config.getInstance().getGlobalProp("trace_dest_host");
destPort = Integer.parseInt(Config.getInstance().getGlobalProp(
"trace_dest_port"));*/
// udpClient = new UdpClient();
// log.info("性能监控UDP客户端初始化完成");
} catch (/*Socket*/Exception se) {
log.error("性能监控UDP客户端初化错误:", se);
}
}
public static synchronized MessageCount getSmscMsgCount(){
MessageCount mc = new MessageCount("短信中心",41);
mc.initSmscMsg();
return mc;
}
public static synchronized MessageCount getMspgwMsgCount(){
MessageCount mc = new MessageCount("智能短信网关",43);
mc.initMspgwMsg();
return mc;
}
public static synchronized MessageCount getIsmpMsgCount(){
MessageCount mc = new MessageCount("ISMP系统",42);
mc.initIsmpMsg();
return mc;
}
public static synchronized MessageCount getSmscMspMsgCount(){
MessageCount mc = new MessageCount("SMSC收发模块",41);
mc.initSmscMsg();
mc.initMspMsg();
return mc;
}
public static synchronized MessageCount getMspgwMspMsgCount(){
MessageCount mc = new MessageCount("MSPGW收发模块",43);
mc.initMspgwMsg();
mc.initMspMsg();
return mc;
}
public static synchronized MessageCount getIsmpMspMsgCount(){
MessageCount mc = new MessageCount("ISMP收发模块",42);
mc.initIsmpMsg();
mc.initMspMsg();
return mc;
}
public static synchronized MessageCount getSmppMsgCount(){
MessageCount mc = new MessageCount("SMPP实体",65);
mc.initSmppMsg();
return mc;
}
public static synchronized MessageCount getMspSmppMsgCount(){
MessageCount mc = new MessageCount("SMPP收发模块",65);
mc.initSmppMsg();
mc.initMspMsg();
return mc;
}
public static synchronized MessageCount getSmscSynchMsgCount(){
MessageCount mc = new MessageCount("定购关系同步模块",54);
mc.initSmscSynchMsg();
return mc;
}
public static synchronized MessageCount getSmgwMsgCount(){
MessageCount mc = new MessageCount("SMGW模块",44);
mc.initSmgwMsg();
// mc.initPushMsg();
return mc;
}
public static synchronized MessageCount getIsagMsgCount(){
MessageCount mc = new MessageCount("ISAG Server",50);
mc.initIsagMsg();
// mc.initPushMsg();
return mc;
}
/**
*
*
*/
private void initMspMsg(){
//目前打印日志的消息跟UDP流程统计合用,而UDP流程不接收登录消息包,所以暂时屏蔽
//msgMap.put(new Integer(0x1),"login");
}
private void initSmppMsg(){
// 目前打印日志的消息跟UDP流程统计合用,而UDP流程不接收登录消息包,所以暂时屏蔽
/* msgMap.put(new Integer(0x00000001),"bind_receiver");
msgMap.put(new Integer(0x80000001),"bind_receiver_rsp");
msgMap.put(new Integer(0x00000002),"bind_transmiter");
msgMap.put(new Integer(0x80000002),"bind_transmiter_rsp");
msgMap.put(new Integer(0x00000009),"bind_transceiver");
msgMap.put(new Integer(0x80000009),"bind_transceiver_rsp");*/
msgMap.put(new Integer(0x00000005),"deliver_sm");
msgMap.put(new Integer(0x80000005),"deliver_sm_resp");
msgMap.put(new Integer(0x00000004),"submit_sm");
msgMap.put(new Integer(0x80000004),"submit_sm_resp");
}
private void initSmscMsg(){
msgMap.put(new Integer(0x6004),"deliver_sm");
msgMap.put(new Integer(0x80006004),"deliver_sm_resp");
msgMap.put(new Integer(0x4),"submit_sm");
msgMap.put(new Integer(0x80000004),"submit_sm_resp");
msgMap.put(new Integer(0x6005),"deliver_sr");
msgMap.put(new Integer(0x80006005),"deliver_sr_resp");
msgMap.put(new Integer(0x6006),"submit_sr");
msgMap.put(new Integer(0x80006006),"submit_sr_resp");
}
private void initMspgwMsg(){
msgMap.put(new Integer(0x3081),"query_service");
msgMap.put(new Integer(0x80003081),"query_service_resp");
msgMap.put(new Integer(0x3082),"forward_sm");
msgMap.put(new Integer(0x80003082),"forward_sm_resp");
msgMap.put(new Integer(0x3083),"forward_sr");
msgMap.put(new Integer(0x80003083),"forward_sr_resp");
}
private void initIsmpMsg(){
msgMap.put(new Integer(0x81000003),"AuthPriceReq");
msgMap.put(new Integer(0x81000014),"AuthPriceRsp");
msgMap.put(new Integer(0x11000015),"AuthPriceCnfmReq");
msgMap.put(new Integer(0x81000015),"AuthPriceCnfmRsp");
}
private void initSmscSynchMsg(){
msgMap.put(new Integer(0x00006002),"MspRequestFullList");
msgMap.put(new Integer(0x80006002),"MspRequestFullListResp");
msgMap.put(new Integer(0x00006003),"MspDataReady");
msgMap.put(new Integer(0x80006003),"MspDataReadyResp");
msgMap.put(new Integer(0x00006001),"MspSetServiceFlag");
msgMap.put(new Integer(0x80006001),"MspSetServiceFlagResp");
}
private void initSmgwMsg(){
msgMap.put(new Integer(0x00000003),"DeliverReq");
msgMap.put(new Integer(0x80000003),"DeliverRsp");
msgMap.put(new Integer(0x00000002),"SubmitReq");
msgMap.put(new Integer(0x80000002),"SubmitRsp");
}
private void initPushMsg(){
msgMap.put(new Integer(0x00000015),"DlvSmf");
msgMap.put(new Integer(0x80000015),"DlvSmfRsp");
msgMap.put(new Integer(0x00000016),"DlvSmfRpt");
msgMap.put(new Integer(0x80000016),"DlvSmfRptRsp");
}
private void initIsagMsg(){
// msgMap.put(new Integer(0x00000001),"收到短信 ");
// msgMap.put(new Integer(0x80000001),"发送短信回执");
// msgMap.put(new Integer(0x00000002),"收到彩信 ");
// msgMap.put(new Integer(0x80000002),"发送彩信回执");
// msgMap.put(new Integer(0x00000003),"收到WAP PUSH");
// msgMap.put(new Integer(0x80000003),"发送WAP PUSH回执");
msgMap.put(new Integer(0x00000001),"SMS ");
msgMap.put(new Integer(0x80000001),"SMS ReceiptReport");
msgMap.put(new Integer(0x00000002),"MMS ");
msgMap.put(new Integer(0x80000002),"MMS ReceiptReport");
msgMap.put(new Integer(0x00000003),"WAP ");
msgMap.put(new Integer(0x80000003),"WAP ReceiptReport");
}
public synchronized void incrementReceive(int emseID, int type) {
if (msg[emseID].get(new Integer(type)) == null) {
msg[emseID].put(new Integer(type), new Message(type));
}
((Message) msg[emseID].get(new Integer(type))).receCounter++;
// System.out.println(((Message) msg[2].get(new Integer(0x00000002))).receCounter);
}
public synchronized void incrementSend(int emseID, int type) {
if (msg[emseID].get(new Integer(type)) == null) {
msg[emseID].put(new Integer(type), new Message(type));
}
((Message) msg[emseID].get(new Integer(type))).sendCounter++;
}
class Message {
int type = 0;
volatile int receCounter = 0;
volatile int sendCounter = 0;
volatile int lastRece = 0;
volatile int lastSend = 0;
volatile int receNum = 0;
volatile int sendNum = 0;
public Message(int type) {
this.type = type;
}
}
class LogThread extends Thread {
LogThread() {
this.setDaemon(true);
start();
}
public void run() {
while (true) {
try {
sleep(10000);
// udpStat();//UDP信息统计
if(statFlag==true){
log.trace("消息包统计 "+MessageCount.this.toString());
}
// updateStatFlag();//更新流量统计开关
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
public String toString() {
StringBuffer sb = new StringBuffer(300);
sb.append(title);
sb.append(":");
for (int i = 0; i < msg.length; i++) {
if (msg[i].size() == 0) {
continue;
}
sb.append("\r\nID:" + i);
sb.append("\r\n" );
sb.append(lpad("msg type",20,' '));
// sb.append(lpad("last receive",15,' '));
sb.append(lpad("receive count",15,' '));
// sb.append(lpad("last send" ,15,' '));
sb.append(lpad("send count",15,' '));
Iterator iterator = msgMap.keySet().iterator();
while (iterator.hasNext()) {
Integer key = (Integer) iterator.next();
Message tempMsg = ((Message) msg[i].get(key));
if(tempMsg==null){
sb.append("\r\n");
sb.append(lpad(msgMap.get(key).toString()+":",20,' '));
/* sb.append(lpad("0" ,15,' '));
sb.append(lpad(String.valueOf(0) ,15,' '));*/
sb.append(lpad("0" ,15,' '));
sb.append(lpad("0" ,15,' '));
continue;
}
/* int receCounter = tempMsg.receNum;
int sendCounter = tempMsg.sendNum;
int lastRece = tempMsg.lastRece;
int lastSend = tempMsg.lastSend;*/
int receCounter = tempMsg.receCounter;
int sendCounter = tempMsg.sendCounter;
//
sb.append("\r\n");
sb.append(lpad(msgMap.get(key).toString(),20,' '));
/* sb.append(lpad(String.valueOf(lastRece) ,15,' '));
sb.append(lpad(String.valueOf(receCounter) ,15,' '));
sb.append(lpad(String.valueOf(lastSend) ,15,' '));
sb.append(lpad(String.valueOf(sendCounter) ,15,' '));*/
sb.append(lpad(String.valueOf(receCounter) ,15,' '));
sb.append(lpad(String.valueOf(sendCounter) ,15,' '));
}
}
return sb.toString();
}
public static String lpad(String s,int length,char c){
String result =s;
int count =length -s.length();
for(int i=0;i<count;i++){
result += c;
}
return result;
}
public static void main(String[] args)throws Exception{
/* MessageCount mc = getSmgwMsgCount();
while(true){
System.out.println(mc);
for(int i=0;i<1000;i++){
mc.incrementReceive(2,0x00000002);
mc.incrementSend(2,0x80000002);
}
Thread.sleep(1000);
}*/
MessageCount mc = getIsagMsgCount();
while(true){
System.out.println(mc);
for(int i=0;i<1000;i++){
/* Integer(0x00000001),"SMS Rquest");
Integer(0x80000001),"SMS ReceiptReport");
Integer(0x00000002),"MMS Rquest");
Integer(0x80000002),"MMS ReceiptReport");
Integer(0x00000003),"WAP Rquest");
Integer(0x80000003),"WAP ReceiptReport");
*/
mc.incrementReceive(1,0x00000001); // SMS Rquest
mc.incrementReceive(1,0x00000002); // MMS Rquest
mc.incrementReceive(1,0x00000003); // WAP Rquest
mc.incrementSend(1,0x80000001); //SMS ReceiptReport
mc.incrementSend(1,0x80000002); //MMS ReceiptReport
mc.incrementSend(1,0x80000003); //WAP ReceiptReport
}
Thread.sleep(1000);
}
// System.out.println(new Integer(-2147459068).intValue());
}
public int getModuleNo() {
return moduleNo;
}
public void setModuleNo(int moduleNo) {
this.moduleNo = moduleNo;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -