📄 inteioprocess.java
字号:
package ffcs.lbp.common;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;
import ffcs.lbp.LbpMessage;
import ffcs.lbp.le.message.LeMessage;
/**
* <p>Title: 小区推送LBP项目</p>
* <p>Description:
* 该类实现位置信息管理模块与定位前置之间的通信抽象类
* </p>
* <p>Copyright: 2007 福建福富软件技术股份有限公司 </p>
* <p>Company: 福建福富软件技术股份有限公司</p>
* @author chenxin
* @version $Rev:1.0 $Rev:1.0 $Date: 2007-06-30
*/
public abstract class InteIOProcess {
/**
* 程序的起动方法
* @return true 起动成功,false起动失败
* @throws IOException
*/
public abstract boolean start() throws IOException;
/**
* 从位置信息管理模块收到消息,进行消息判断后,发往LCS(定位引擎)
* @param conn 连接对象
* @param message 收到的消息
*/
public abstract void receivedFromLocInfoMgr(Connection conn, LbpMessage message);
/**
* 连接关闭
* @param conn
*/
public abstract void connectionClosed(Connection conn);
/**
* 连接建立
* @param conn
*/
public abstract void connectionEstablished(Connection conn);
/**
* 异常处理方法,须进一步完善
* @param conn 连接对象
* @param throwable 异常对象
*/
public abstract void exceptionCaught(Connection conn, Throwable throwable);
/**
* 向连接发送链路检测, 根据连接checkLinkTimeExpired链路检测时间
*
* @return true 链路测试请求包发送成功 false 链路测试发送失败
*/
protected void processEnquireLink(Connection conn) {
if (conn == null) {
throw new NullPointerException("processEnquireLink conn is null");
}
if (!conn.isConnected()) {
conn.addLinkFailCount();
return ;
}
if (conn.checkLinkTimeExpired()) {
if(!conn.Link()){
conn.addLinkFailCount();
}
}
if(conn.checkLinkTimeOut()){
conn.addLinkFailCount();
conn.Link();
}
}
/**
* 接收登录请求数据包
* @param sc
* @return ByteBuffer 返回接收到的BUF
*/
public ByteBuffer receiveBindReq(SocketChannel sc) {
ByteBuffer readBuf = ByteBuffer.allocate(256);
try {
long l = System.currentTimeMillis();
int readSize = 0;
for (;;) {
int n = sc.read(readBuf);
readSize += n;
if (n < 0) {
break;
} else if (n == 0) {
if (readSize > 0 || (System.currentTimeMillis() - l) > 4000) {
break;
}
Thread.sleep(10);
}
}
} catch (Exception ioe) {
ioe.printStackTrace();
}
return readBuf;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -