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

📄 messagecount.java

📁 一个ISAG Server的模拟器
💻 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 + -