@Override
    protected void encode(ChannelHandlerContext ctx, Object msg, List<Object> out)
        throws Exception {
      com.alibaba.dubbo.remoting.buffer.ChannelBuffer buffer =
          com.alibaba.dubbo.remoting.buffer.ChannelBuffers.dynamicBuffer(1024);
      NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);
      try {
        codec.encode(channel, buffer, msg);
      } finally {
        NettyChannel.removeChannelIfDisconnected(ctx.channel());
      }

      out.add(Unpooled.wrappedBuffer(buffer.toByteBuffer()));
    }