public ByteBuf encode(NettyMessage msg) throws Exception { ByteBuf sendBuf = Unpooled.buffer(); sendBuf.writeInt((msg.getHeader().getCrcCode())); sendBuf.writeInt((msg.getHeader().getLength())); sendBuf.writeLong((msg.getHeader().getSessionID())); sendBuf.writeByte((msg.getHeader().getType())); sendBuf.writeByte((msg.getHeader().getPriority())); sendBuf.writeInt((msg.getHeader().getAttachment().size())); String key = null; byte[] keyArray = null; Object value = null; for (Map.Entry<String, Object> param : msg.getHeader().getAttachment().entrySet()) { key = param.getKey(); keyArray = key.getBytes("UTF-8"); sendBuf.writeInt(keyArray.length); sendBuf.writeBytes(keyArray); value = param.getValue(); marshallingEncoder.encode(value, sendBuf); } key = null; keyArray = null; value = null; if (msg.getBody() != null) { marshallingEncoder.encode(msg.getBody(), sendBuf); } else sendBuf.writeInt(0); sendBuf.setInt(4, sendBuf.readableBytes()); return sendBuf; }
/** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { TestCodeC testC = new TestCodeC(); NettyMessage message = testC.getMessage(); System.out.println(message + "[body ] " + message.getBody()); for (int i = 0; i < 5; i++) { ByteBuf buf = testC.encode(message); NettyMessage decodeMsg = testC.decode(buf); System.out.println(decodeMsg + "[body ] " + decodeMsg.getBody()); System.out.println("-------------------------------------------------"); } }