本文整理汇总了Java中org.apache.mina.filter.codec.demux.MessageDecoderResult类的典型用法代码示例。如果您正苦于以下问题:Java MessageDecoderResult类的具体用法?Java MessageDecoderResult怎么用?Java MessageDecoderResult使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
MessageDecoderResult类属于org.apache.mina.filter.codec.demux包,在下文中一共展示了MessageDecoderResult类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: decode
import org.apache.mina.filter.codec.demux.MessageDecoderResult; //导入依赖的package包/类
public MessageDecoderResult decode(IoSession session, ByteBuffer in, ProtocolDecoderOutput out)
throws ProtocolCodecException {
int messageCount = 0;
while (parseMessage(in, out)) {
messageCount++;
}
if (messageCount > 0) {
// Mina will compact the buffer because we can't detect a header
if (in.remaining() < HEADER_PATTERN.length) {
position = 0;
}
return MessageDecoderResult.OK;
} else {
// Mina will compact the buffer
position -= in.position();
return MessageDecoderResult.NEED_DATA;
}
}
示例2: decodable
import org.apache.mina.filter.codec.demux.MessageDecoderResult; //导入依赖的package包/类
@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;
}
示例3: decode
import org.apache.mina.filter.codec.demux.MessageDecoderResult; //导入依赖的package包/类
/**
* 解码并处理断包
*/
@Override
public MessageDecoderResult decode(IoSession session, IoBuffer buffer, ProtocolDecoderOutput output)
throws Exception {
int nRemainning = buffer.remaining();
if (nRemainning < MessageCodec.HEAD_LENGTH) {// min length
return MessageDecoderResult.NEED_DATA;
} else {
buffer.mark();// 标记位置mark=pos
int nLen = buffer.getShort();// 包长(包括消息头)
buffer.reset();// 重置位置pos=mark
// 如果buffer中可读的长度小于包长说明断包返回 NEED_DATA
if (nRemainning < nLen) {
// buffer.reset();//重置位置pos=mark
return MessageDecoderResult.NEED_DATA;
}
// buffer.reset();//重置位置pos=mark
}
Object proObj = decodeBody(session, buffer);
output.write(proObj);// 解码后输出
return MessageDecoderResult.OK;
}
示例4: decodeCommonHeader
import org.apache.mina.filter.codec.demux.MessageDecoderResult; //导入依赖的package包/类
protected MessageDecoderResult decodeCommonHeader(AbstractMessage message, IoBuffer in) {
//Common decoding part
if (in.remaining() < 2) {
return NEED_DATA;
}
byte h1 = in.get();
byte messageType = (byte) ((h1 & 0x00F0) >> 4);
boolean dupFlag = ((byte) ((h1 & 0x0008) >> 3) == 1);
byte qosLevel = (byte) ((h1 & 0x0006) >> 1);
boolean retainFlag = ((byte) (h1 & 0x0001) == 1);
int remainingLength = Utils.decodeRemainingLenght(in);
if (remainingLength == -1) {
return NEED_DATA;
}
message.setMessageType(messageType);
message.setDupFlag(dupFlag);
message.setQos(AbstractMessage.QOSType.values()[qosLevel]);
message.setRetainFlag(retainFlag);
message.setRemainingLength(remainingLength);
return OK;
}
示例5: decode
import org.apache.mina.filter.codec.demux.MessageDecoderResult; //导入依赖的package包/类
public MessageDecoderResult decode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception {
//Common decoding part
UnsubscribeMessage message = new UnsubscribeMessage();
if (decodeCommonHeader(message, in) == NEED_DATA) {
return NEED_DATA;
}
//check qos level
if (message.getQos() != QOSType.LEAST_ONE) {
return NOT_OK;
}
int start = in.position();
//read messageIDs
message.setMessageID(Utils.readWord(in));
int readed = in.position() - start;
while (readed < message.getRemainingLength()) {
message.addTopic(Utils.decodeString(in));
readed = in.position() - start;
}
out.write(message);
return OK;
}
示例6: decode
import org.apache.mina.filter.codec.demux.MessageDecoderResult; //导入依赖的package包/类
public MessageDecoderResult decode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception {
//Common decoding part
SubscribeMessage message = new SubscribeMessage();
if (decodeCommonHeader(message, in) == NEED_DATA) {
return NEED_DATA;
}
//check qos level
if (message.getQos() != QOSType.LEAST_ONE) {
return NOT_OK;
}
int start = in.position();
//read messageIDs
message.setMessageID(Utils.readWord(in));
int readed = in.position() - start;
while (readed < message.getRemainingLength()) {
decodeSubscription(in, message);
readed = in.position() - start;
}
out.write(message);
return OK;
}
示例7: checkDecodable
import org.apache.mina.filter.codec.demux.MessageDecoderResult; //导入依赖的package包/类
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;
}
示例8: decode
import org.apache.mina.filter.codec.demux.MessageDecoderResult; //导入依赖的package包/类
public MessageDecoderResult decode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception {
//Common decoding part
SubAckMessage message = new SubAckMessage();
if (decodeCommonHeader(message, in) == NEED_DATA) {
return NEED_DATA;
}
int remainingLength = message.getRemainingLength();
//MessageID
message.setMessageID(Utils.readWord(in));
remainingLength -= 2;
//Qos array
if (in.remaining() < remainingLength ) {
return NEED_DATA;
}
for (int i = 0; i < remainingLength; i++) {
byte qos = in.get();
message.addType(QOSType.values()[qos]);
}
out.write(message);
return OK;
}
示例9: testBadFlagUserPwd
import org.apache.mina.filter.codec.demux.MessageDecoderResult; //导入依赖的package包/类
@Test
public void testBadFlagUserPwd() throws UnsupportedEncodingException, Exception {
m_buff = IoBuffer.allocate(14);
m_buff.clear().put((byte)(AbstractMessage.CONNECT << 4)).put((byte)12);
//Proto name
encodeString(m_buff, "MQIsdp");
//version
m_buff.put((byte)3);
//conn flags
m_buff.put((byte)0x4E); //sets user to false and password to true
//keepAlive
m_buff.put((byte)0).put((byte) 0x0A);
m_buff.flip();
//Excercise
MessageDecoderResult res = m_msgdec.decode(null, m_buff, m_mockProtoDecoder);
assertNull(m_mockProtoDecoder.getMessage());
assertEquals(MessageDecoder.NOT_OK, res);
}
示例10: testMultiTopic
import org.apache.mina.filter.codec.demux.MessageDecoderResult; //导入依赖的package包/类
@Test
public void testMultiTopic() throws Exception {
m_buff = IoBuffer.allocate(4).setAutoExpand(true);
String topic1 = "a/b";
String topic2 = "c/d/e";
initMultiTopic(m_buff, 123, topic1, topic2);
m_buff.flip();
//Excercise
MessageDecoderResult res = m_msgdec.decode(null, m_buff, m_mockProtoDecoder);
//Verify
assertEquals(MessageDecoderResult.OK, res);
assertEquals(2, m_mockProtoDecoder.getMessage().topics().size());
assertEquals(topic1, m_mockProtoDecoder.getMessage().topics().get(0));
assertEquals(topic2, m_mockProtoDecoder.getMessage().topics().get(1));
assertEquals(AbstractMessage.UNSUBSCRIBE, m_mockProtoDecoder.getMessage().getMessageType());
}
示例11: testDecodeSingleTopic_bug
import org.apache.mina.filter.codec.demux.MessageDecoderResult; //导入依赖的package包/类
@Test
public void testDecodeSingleTopic_bug() throws Exception {
//A2 0C 00 01 00 06 2F 74 6F 70 69 63 //12 byte
byte[] overallMessage = new byte[] {(byte)0xA2, 0x0A, //fixed header
0x00, 0x01, //MSG ID
0x00, 0x06, 0x2F, 0x74, 0x6F, 0x70, 0x69, 0x63}; //"/topic" string
m_buff = IoBuffer.allocate(overallMessage.length).setAutoExpand(true);
m_buff.put(overallMessage);
m_buff.flip();
MessageDecoderResult res = m_msgdec.decode(null, m_buff, m_mockProtoDecoder);
assertNotNull(m_mockProtoDecoder.getMessage());
UnsubscribeMessage message = (UnsubscribeMessage) m_mockProtoDecoder.getMessage();
// assertEquals(0x0A, message.getMessageID());
// assertEquals(1, message.types().size());
// assertEquals(AbstractMessage.QOSType.LEAST_ONE, message.types().get(0));
}
示例12: testBadQos
import org.apache.mina.filter.codec.demux.MessageDecoderResult; //导入依赖的package包/类
@Test
public void testBadQos() throws Exception {
initHeaderQos(m_buff, 0xAABB, QOSType.LEAST_ONE, QOSType.MOST_ONE, QOSType.MOST_ONE);
m_buff.flip();
//Excercise
MessageDecoderResult res = m_msgdec.decode(null, m_buff, m_mockProtoDecoder);
//Verify
assertEquals(MessageDecoderResult.OK, res);
assertEquals(0xAABB, m_mockProtoDecoder.getMessage().getMessageID().intValue());
List<QOSType> qoses = m_mockProtoDecoder.getMessage().types();
assertEquals(3, qoses.size());
assertEquals(QOSType.LEAST_ONE, qoses.get(0));
assertEquals(QOSType.MOST_ONE, qoses.get(1));
assertEquals(QOSType.MOST_ONE, qoses.get(2));
assertEquals(AbstractMessage.SUBACK, m_mockProtoDecoder.getMessage().getMessageType());
}
示例13: testBugBadRemainingCalculation
import org.apache.mina.filter.codec.demux.MessageDecoderResult; //导入依赖的package包/类
@Test
public void testBugBadRemainingCalculation() throws Exception {
byte[] overallMessage = new byte[] {(byte)0x90, 0x03, //fixed header
0x00, 0x0A, //MSG ID
0x01}; //QoS array
m_buff = IoBuffer.allocate(overallMessage.length).setAutoExpand(true);
m_buff.put(overallMessage);
m_buff.flip();
//Exercise
MessageDecoderResult res = m_msgdec.decode(null, m_buff, m_mockProtoDecoder);
assertNotNull(m_mockProtoDecoder.getMessage());
assertEquals(MessageDecoder.OK, res);
SubAckMessage message = (SubAckMessage) m_mockProtoDecoder.getMessage();
assertEquals(0x0A, message.getMessageID().intValue());
assertEquals(1, message.types().size());
assertEquals(AbstractMessage.QOSType.LEAST_ONE, message.types().get(0));
}
示例14: testMultiTopic
import org.apache.mina.filter.codec.demux.MessageDecoderResult; //导入依赖的package包/类
@Test
public void testMultiTopic() throws Exception {
m_buff = IoBuffer.allocate(4).setAutoExpand(true);
Couple c1 = new Couple((byte)2, "a/b");
Couple c2 = new Couple((byte)1, "c/d/e");
initMultiTopic(m_buff, 123, c1, c2);
m_buff.flip();
//Excercise
MessageDecoderResult res = m_msgdec.decode(null, m_buff, m_mockProtoDecoder);
//Verify
assertEquals(MessageDecoderResult.OK, res);
assertEquals(2, m_mockProtoDecoder.getMessage().subscriptions().size());
assertEquals(AbstractMessage.SUBSCRIBE, m_mockProtoDecoder.getMessage().getMessageType());
}
示例15: testHeaderWithMessageID_Payload
import org.apache.mina.filter.codec.demux.MessageDecoderResult; //导入依赖的package包/类
@Test
public void testHeaderWithMessageID_Payload() throws Exception {
m_buff = IoBuffer.allocate(14).setAutoExpand(true);
int messageID = 123;
byte[] payload = new byte[]{0x0A, 0x0B, 0x0C};
initHeaderWithMessageID_Payload(m_buff, messageID, payload);
m_buff.flip();
//Exercise
MessageDecoderResult res = m_msgdec.decode(null, m_buff, m_mockProtoDecoder);
assertNotNull(m_mockProtoDecoder.getMessage());
assertEquals(MessageDecoder.OK, res);
assertEquals("Fake Topic", m_mockProtoDecoder.getMessage().getTopicName());
assertEquals(messageID, (int) m_mockProtoDecoder.getMessage().getMessageID());
TestUtils.verifyEquals(payload, m_mockProtoDecoder.getMessage().getPayload());
}