コード例 #1
0
ファイル: TestCodeC.java プロジェクト: ericzuobin/nettybook
  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;
  }
コード例 #2
0
ファイル: TestCodeC.java プロジェクト: ericzuobin/nettybook
  /**
   * @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("-------------------------------------------------");
    }
  }