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

📄 locinfomgrconnection.java

📁 中国移动定位引擎的客户端
💻 JAVA
字号:
package ffcs.lbp.common;

import net.gleamynode.netty2.EventDispatcher;
import net.gleamynode.netty2.IoProcessor;
import net.gleamynode.netty2.Message;
import net.gleamynode.netty2.MessageRecognizer;
import net.gleamynode.netty2.Session;
import ffcs.logging.*;
import ffcs.lbp.LbpMessage;
import ffcs.lbp.le.message.LeMessage;
import ffcs.lbp.le.message.Link;
import ffcs.lbp.le.message.LinkRsp;
import ffcs.logging.LogFactory;

/**
 * <p>
 * Title: 小区推送LBP项目
 * </p>
 * <p>
 * Description: 与MSP的连接类,该类实现与SMSC的发送与接收包
 * </p>
 * <p>
 * Copyright: 2007 福建福富软件技术股份有限公司
 * </p>
 * <p>
 * Company: 福建福富软件技术股份有限公司
 * </p>
 * 
 * @author chenxin
 * @version $Rev:1.0 $Date: 2007-06-28
 */
public class LocInfoMgrConnection extends Connection {
    
	private static Log log = LogFactory.getLog(LocInfoMgrConnection.class);

	// 链路测试包
	private Link link = new Link();

	// 链路测试应答包
	private LinkRsp linkResp = new LinkRsp();

	private InteIOProcess inteIoProcess = null;
	
	private boolean connTypeIsServer = true;

	/**
	 * 构造函数
	 * @param sc SOCKET对象
	 * @param ioPro IO处理实例,负责连接的读入和写出处理
	 * @param eventDis 负责连接事件的触发和调度
	 * @param msgEncoder 封包,实现字节转成消息对象
	 * @param inteIoProcess 接口IO管理类
	 */
	public LocInfoMgrConnection(IoProcessor ioPro,
			EventDispatcher eventDis, MessageRecognizer msgEncoder,
			LocInfoMgrIOProcess inteIoProcess) {
		
		super.setIoProcessor(ioPro);
		super.setEventDispatcher(eventDis);
		super.setMsgRecognizer(msgEncoder);
		this.inteIoProcess = inteIoProcess;
	}

	/**
	 * 登录操作,参考{@link #login(long timeOut)}
	 * 
	 * @return Result 返回结果,
	 */
	public Result login() {
		return null;
	}

	/**
	 * <p>
	 * 无须实现,MSP作为客户端登录到接口模块
	 * </p>
	 * 
	 * @param timeOut
	 *            登录超时时间(接收应答包的时间)
	 * @return 返回Result 对象
	 */
	public Result login(long timeOut) {
		return null;
	}

	/**
	 * 发送链路测试功能,
	 * 
	 * @return boolean <code>true</code> 链路测试成功 <code>false</code> 链路测试失败
	 */
	public boolean Link() {
		link.setOrgSystemID(getConfig().getModuleNo());
		this.setLastLinkTime(System.currentTimeMillis()); 
		return super.sendMessage(link);
	}

	/**
	 * 发送链路测试功能
	 * 
	 * @param timeOut
	 *            链路测试超时时间,如果超时return false
	 * @return <code>true</code> 链路测试成功 <code>false</code> 链路测试失败
	 * @throws Exception
	 */
	public boolean Link(long timeOut) {
		link.setOrgSystemID(getConfig().getModuleNo());
		// 用MsgType作为key,该key为唯一
		LbpMessage m = sendRequestForRep(link.getPackFlag(), link, timeOut);

		// 如果为空,则接收登录应答包超时
		if (m == null) {
			return false;
		} else {
			return true;
		}
	}

	/**
	 * 当接收到对方发过来的链路测试请求包时,回链路测试应答包
	 * 
	 * @param seqnum
	 *            对链路测试包对应的seqnum
	 * @return boolean <code>true</code> 应答成功 <code>false</code> 应答失败
	 */
	public boolean LinkRsp(Link link) {
		// 防止多线程时,修改了linkResp包中的sequence_number字段
		synchronized (linkResp) {
			linkResp.setDstSystemID(link.getOrgSystemID());
			super.sendMessage(linkResp);
		}
		return true;
	}

	/**
	 * 接收消息事件的方法,
	 * 
	 * @param session
	 *            接收消息的会话
	 * @param message
	 *            具体的消息
	 */
	public void messageReceived(Session session, Message message) {
		if (message == null) {
			return;
		}
		LbpMessageAdapter smMsg = (LbpMessageAdapter)message;
		LeMessage sm = (LeMessage) smMsg.getLbpMessage();
		
        if (log.isDebugEnabled()) {
			log.debug("消息来自[" + getConnName()+ "," + getConnID() + "]:"  + sm);
		}
		if (log.isInfoEnabled()) {
			log.info("消息来自[" + getConnName()+ "," + getConnID()+ "]:"  + sm.getSimpleInfo());
		}
		setLastReceiveTime(System.currentTimeMillis());
		clearLinkFail();// 链路测试清零

		switch (sm.getCommandId()) {
		case LeMessage.Link:
			getConfig().setLastLinkTime(System.currentTimeMillis());
			LinkRsp(link);
			break;
		case LeMessage.LinkRsp:
			checkWaitPacket(sm.getSequenceId(), sm);
			getConfig().setLastLinkTime(System.currentTimeMillis());
			break;
		default:
			inteIoProcess.receivedFromLocInfoMgr(this, sm);
			break;
		}
	}
	/**
	 * 取得接口IO管理类
	 * 
	 * @return InteIOProcess 接口IO管理类
	 */
	public InteIOProcess getInteIoProcess() {
		return inteIoProcess;
	}

	/**
	 * 设备得接口IO管理类
	 * 
	 * @param inteIOProcess
	 *            接口IO管理类
	 */
	public void setInteIOProcess(InteIOProcess inteIOProcess) {
		this.inteIoProcess = inteIOProcess;
	}
	
	public boolean connTypeIsServer(){
		return connTypeIsServer;
	}
	

	public String toString() {
		
		StringBuffer sb = new StringBuffer(80);
		sb.append('[');
		sb.append(super.toString());
		sb.append(']');

		return sb.toString();
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -