⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 messagecount.java

📁 中国移动定位引擎的客户端
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
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 + -