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

📄 inteioprocess.java

📁 中国移动定位引擎的客户端
💻 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 + -