📄 locinfomgrconnection.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 + -