/* (non-Javadoc)
   * @see org.jboss.netty.handler.codec.oneone.OneToOneEncoder#encode(org.jboss.netty.channel.ChannelHandlerContext, org.jboss.netty.channel.Channel, java.lang.Object)
   */
  @Override
  protected Object encode(ChannelHandlerContext ctx, Channel channel, Object msg) throws Exception {
    if (!(msg instanceof Message)) return msg;

    Message message = (Message) msg;

    long commandId = ((Long) message.getHeader().getCommandId()).longValue();
    if (commandId != packetType.getCommandId()) return msg;

    CmppDeliverResponseMessage responseMessage = (CmppDeliverResponseMessage) msg;

    ChannelBuffer bodyBuffer = ChannelBuffers.dynamicBuffer();
    bodyBuffer.writeBytes(DefaultMsgIdUtil.msgId2Bytes(responseMessage.getMsgId()));
    bodyBuffer.writeInt((int) responseMessage.getResult());

    message.setBodyBuffer(bodyBuffer.copy().array());

    ChannelBuffer messageBuffer = ChannelBuffers.dynamicBuffer();
    messageBuffer.writeBytes(message.getHeader().getHeadBuffer());
    messageBuffer.writeBytes(message.getBodyBuffer());
    return messageBuffer;
  }