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

📄 abstractmessagerecognizer.java

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

import java.nio.ByteBuffer;

import net.gleamynode.netty2.Message;
import net.gleamynode.netty2.MessageParseException;
import net.gleamynode.netty2.MessageRecognizer;
import ffcs.lbp.LbpMessage;
import ffcs.logging.Log;
import ffcs.logging.LogFactory;

/**
* <p>Title: 小区推送LBP项目</p>
* <p>Description:
*  协议封装类,把字节流封装成相应的Message包
* </p>
* <p>Copyright: 2007 福建福富软件技术股份有限公司 </p>
* <p>Company: 福建福富软件技术股份有限公司</p>
* @author chenxin
* @version $Rev:1.0 $Date: 2007-07-05
*/
public abstract class AbstractMessageRecognizer implements MessageRecognizer {
	private static Log log = LogFactory.getLog(AbstractMessageRecognizer.class);
    
	/**
	 * 根据消息ID得到指定的消息
	 * @param ByteBuffer
	 * @return 
	 * (1)SmMessage 短信消息包,
	 * (2)null 当buf的数据不足于构造一个消息包的时候,返回空
	 * @throws MessageParseException
	 */
	public abstract LbpMessage LbpMessageRecognize(ByteBuffer buf)throws MessageParseException;
	
	
	/**
     * 把数据包(字节)封装成相应的Message对象
     * @param 数据包BUF
     * @return Message 消息对象
     * @throws MessageParseException 数据包解析出送,抛出该异常
     */
	public Message recognize(ByteBuffer buf) throws MessageParseException {
		/**
		 * socket的BUF日志,只有在debug模式下,才会打印,
		 * 以16进制的形式显示,显示的内容为当前socket缓冲区的内容
		 */
		if (log.isDebugEnabled()) {
			int position = buf.position();
			int limit = buf.limit();
			byte[] array = new byte[buf.remaining()];
			buf.get(array);
			String s =  LbpMessage.byte2hexString(array);
			log.debug("收到消息:"+ s);
			buf.position(position);
			buf.limit(limit);
		}
		/**
		 * 通过子类得到具体的消息包
		 * 可能为空,当buf的数据不足于构造一个消息包的时候,返回空
		 */
		LbpMessage lbpMessage = LbpMessageRecognize(buf);
		
		/**
		 * 当socket缓冲区数据,不足于一个消息包大小的时,消息返回为空
		 * 直到socket断续接收到数据,缓冲区数据达到消息包的大小时,在组装消息对象
		 */
		if(lbpMessage ==null){
			return null;
        }
		//把消息转换成(LbpMessageAdapter)netty消息适配器
		return new LbpMessageAdapter(lbpMessage);
	}
}

⌨️ 快捷键说明

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