当前位置: 首页>>代码示例>>Java>>正文


Java MessageDecoderResult.NOT_OK属性代码示例

本文整理汇总了Java中org.apache.mina.filter.codec.demux.MessageDecoderResult.NOT_OK属性的典型用法代码示例。如果您正苦于以下问题:Java MessageDecoderResult.NOT_OK属性的具体用法?Java MessageDecoderResult.NOT_OK怎么用?Java MessageDecoderResult.NOT_OK使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在org.apache.mina.filter.codec.demux.MessageDecoderResult的用法示例。


在下文中一共展示了MessageDecoderResult.NOT_OK属性的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: decodable

@Override
public MessageDecoderResult decodable(IoSession session, IoBuffer buf) {
	int remain = buf.remaining();
	if(remain <= 1){
		return  MessageDecoderResult.NOT_OK;
	}
	buf.mark();
	byte[] data = new byte[remain - 2];
	buf.get(data);
	byte cs = buf.get();
	int t = 0;
	for( int i =0; i< data.length; i ++){
		t += data[i];
	}
	int cs_cal = (t%256) ;
	
	//如果校验码校验不通过,则为无效消息
	if ( (cs & 0xFF) != (cs_cal & 0xFF)){
		buf.reset();
		return MessageDecoderResult.NOT_OK;
	}
	buf.reset();
	return MessageDecoderResult.OK;
}
 
开发者ID:langxianwei,项目名称:iot-plat,代码行数:24,代码来源:MessageTcpDecoder.java

示例2: checkDecodable

static MessageDecoderResult checkDecodable(byte type, IoBuffer in) {
    if (in.remaining() < 1) {
        return MessageDecoderResult.NEED_DATA;
    }
    byte h1 = in.get();
    byte messageType = (byte) ((h1 & 0x00F0) >> 4);
    
    int remainingLength = Utils.decodeRemainingLenght(in);
    if (remainingLength == -1) {
        return MessageDecoderResult.NEED_DATA;
    }
    
    //check remaining length
    if (in.remaining() < remainingLength) {
        return MessageDecoderResult.NEED_DATA;
    }
    
    return messageType == type ? MessageDecoderResult.OK : MessageDecoderResult.NOT_OK;
}
 
开发者ID:milliondreams,项目名称:moquette-mqtt,代码行数:19,代码来源:Utils.java

示例3: decodable

@Override
public MessageDecoderResult decodable(IoSession session, IoBuffer in)
{
	Context context = (Context) session.getAttribute(CONTEXT);
	
	
	//表示数据不够,需要读到新的数据后,再次调用decode()方法。
	if(context == null){
		context = new Context();
		// 跳过前4字节
		//in.skip(4); 
		//获取第一个字符用于判断是否可以被当前解码器解码
		context.dataType = in.getInt();
		if(context.dataType == BeanUtil.UPLOAD_FILE){
			System.out.println("我收到1了");
			context.strLength = in.getInt();
			context.byteStr = new byte[context.strLength];
			context.fileSize = in.getInt();
			context.byteFile = new byte[context.fileSize];
			session.setAttribute(CONTEXT, context);
			return MessageDecoderResult.OK;
		}else{
			return MessageDecoderResult.NOT_OK;
		}
	}else{
		if(context.dataType == BeanUtil.UPLOAD_FILE){
			//表示可以解码
			return MessageDecoderResult.OK;
		}else{
			//表示不能解码,会抛出异常
			return MessageDecoderResult.NOT_OK;
		}
	}
}
 
开发者ID:Xvms,项目名称:xvms,代码行数:34,代码来源:FileProtocolDecoder.java

示例4: decodable

@Override
public MessageDecoderResult decodable(IoSession session, IoBuffer in)
{
	
	Context context = (Context) session.getAttribute(CONTEXT);
	if(context!=null){
		if(context.limit_data){
			in.buf().position(0);
		}
	}
	//表示数据不够,需要读到新的数据后,再次调用decode()方法。
	if (in.remaining() < 2){
		return MessageDecoderResult.NEED_DATA;
	}
	else{
			context = new Context();
			//获取一个字符表示新的数据开始 用于判断异常数据
			in.skip(1);//这个数据是十六进制的 01 也就是1
			//获取第一个字符用于判断是否可以被当前解码器解码
			context.dataType = in.getInt();
			
			if(context.dataType == BeanUtil.UPLOAD_STR){
				//读取标题长度
				context.strLength = in.getInt();
				//声明数组长度
				context.byteStr = new byte[context.strLength];
				//System.out.println("我收到2了");
				session.setAttribute(CONTEXT, context);
				//表示可以解码
				return MessageDecoderResult.OK;
			}else{
				//System.out.println("服务端收到意外数据");
				return MessageDecoderResult.NOT_OK;
			}
		}
}
 
开发者ID:Xvms,项目名称:xvms,代码行数:36,代码来源:StringProtocolDecoder.java

示例5: decodable

@Override
public MessageDecoderResult decodable(IoSession session, IoBuffer buffer) {
	// 如果buffer中可读的长度还没达到消息头长度返回 NEED_DATA
	if (buffer.remaining() < MessageCodec.HEAD_LENGTH) {
		return MessageDecoderResult.NEED_DATA;
	} else {
		if (!MessageCodec.checkValid(buffer.buf())) { // 不符合解析条件
			return MessageDecoderResult.NOT_OK;
		}
	}
	return MessageDecoderResult.OK;
}
 
开发者ID:East196,项目名称:maker,代码行数:12,代码来源:ProtobufMessageDecoder.java

示例6: decodable

public MessageDecoderResult decodable(IoSession session, IoBuffer in) {
	try {
		return messageComplete(in) ? MessageDecoderResult.OK
				: MessageDecoderResult.NEED_DATA;
	} catch (Exception ex) {
		ex.printStackTrace();
	}

	return MessageDecoderResult.NOT_OK;
}
 
开发者ID:mklm1525,项目名称:GameServer_demo,代码行数:10,代码来源:HttpRequestDecoder.java

示例7: decode

@Override
public MessageDecoderResult decode(IoSession session, IoBuffer buf, ProtocolDecoderOutput out) throws Exception {
	CjyTcpMessage message = new CjyTcpMessage();
	logger.info("收到采集仪消息" + buf.getHexDump());
	buf.mark();
	//帧起始符 0x68
	buf.get();
	// 获取设备编码
	int address_i = buf.getInt();
	message.setAddress(CommUtils.highAndLowAddressSwap(address_i));
	//帧起始符 0x16
	if ( buf.get() != 0x68){
		return null;
	}
	//控制码
	byte control = buf.get();
	message.setD7(control >> 7);
	message.setD6(control >> 6);
	
	//控制码 , 协议簇
	message.setCmd(control&0x0f);
	//数据体长度
	int length = buf.get();
	message.setLength(length);
	//数据体
	byte[] data = MessageUtil.getBytes(buf, length);
	message.setData(data);
	//CRC
	byte crc = (buf.get());
	//结束标志
	int finished = buf.get();
	if ( finished != 0x16 ){
		return MessageDecoderResult.NOT_OK;
	}
	buf.reset();
	//获取校验位前字节
	byte[] cpData = MessageUtil.getBytes(buf, 8 + length);
	int t = 0;
	for( int i =0; i< cpData.length; i ++){
		t += cpData[i];
	}
	int crc_cal = (t%256) ;
	
	logger.info("获取的CRC值" + (crc & 0xFF) + ",计算的crc值:" + crc_cal + ",address:" + message.getAddress());
	//如果校验码校验不通过,则为无效消息
	if ( (crc & 0xFF) != (crc_cal & 0xFF)){
		return MessageDecoderResult.NOT_OK;
	}
	buf.get();
	buf.get();
	out.write(message);
	return MessageDecoderResult.OK;
}
 
开发者ID:langxianwei,项目名称:iot-plat,代码行数:53,代码来源:MessageTcpDecoder.java


注:本文中的org.apache.mina.filter.codec.demux.MessageDecoderResult.NOT_OK属性示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。