本文整理汇总了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;
}
示例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;
}
示例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;
}
}
}
示例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;
}
}
}
示例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;
}
示例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;
}
示例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;
}