📄 messagecount.java
字号:
package ffcs.lbp.common;
import java.net.SocketException;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Iterator;
import ffcs.lbp.dao.SystemCfgDao;
import ffcs.logging.Log;
import ffcs.logging.LogFactory;
//import ffcs.sm.stat.StatMsg;
//import ffcs.sm.stat.StatRst;
//import ffcs.udp.UdpClient;
/**
* 计数类,在测试时候使用
* @author huangcm
* @version 1.0
* 2007-11-25 lintao 修改发送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";
// static UdpClient udpClient = null;
/*static String destHost=null;
static int destPort=3000;*/
private static Log log = LogFactory.getLog(MessageCount.class);
//流量统计发送UDP消息的开关,从数据库读取
private boolean statFlag=true;
private SystemCfgDao cfgDao = new SystemCfgDao();
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);
}
}
/**
* 到数据库cfg_info表读取流量统计开关
*/
public void updateStatFlag(){
try{
String temp = cfgDao.getSystemValue(STAT_FALG);
if(temp==null){
log.warn("到cfg_info表取["+STAT_FALG+"]配置项为空");
return;
}
statFlag= temp.equals("1") ? true : false;
}catch(SQLException sqle ){
log.error(sqle);
}
}
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();
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");
}
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++;*/
}
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(5000);
// udpStat();//UDP信息统计
log.info("消息包统计 "+MessageCount.this.toString());
updateStatFlag();//更新流量统计开关
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
/**
*
*发送UDP统计信息
*/
/*public void udpStat(){
//统计
StatRst statRst=new StatRst();
statRst.setSequence(0);
statRst.setCommandStatus(0);
for (int i = 0; i < msg.length; i++) {
if (msg[i].size() == 0) {
continue;
}
//统计
statRst.setIModuleType(moduleType);
statRst.setIModuleNo(moduleNo);
statRst.setIEntitySrc(i);
statRst.setSzEntitySrcName("");
statRst.setSzLastTime(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));
statRst.setIMsgNum(msgMap.size());
StatMsg statMsg[]=new StatMsg[msgMap.size()];
int msgNo=0;
//--
Iterator iterator = msgMap.keySet().iterator();
while (iterator.hasNext()) {
//统计
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -