code: private int writeBytes(ChannelOutboundBuffer in, ByteBuf buf) throws Exception {
          int readableBytes = buf.readableBytes();
          if (readableBytes == 0) {
              in.remove();
              return 0;
          }
  
          if (buf.hasMemoryAddress() || buf.nioBufferCount() == 1) {
              return doWriteBytes(in, buf);
          } else {
              ByteBuffer[] nioBuffers = buf.nioBuffers();
              return writeBytesMultiple(in, nioBuffers, nioBuffers.length, readableBytes,
                      config().getMaxBytesPerGatheringWrite());
          }
      }
docs: Write bytes form the given {@link ByteBuf} to the underlying {@link java.nio.channels.Channel}.
  @param in the collection which contains objects to write.
  @param buf the {@link ByteBuf} from which the bytes should be written
  @return The value that should be decremented from the write quantum which starts at
  {@link ChannelConfig#getWriteSpinCount()}. The typical use cases are as follows:
  <ul>
  <li>0 - if no write was attempted. This is appropriate if an empty {@link ByteBuf} (or other empty content)
  is encountered</li>
  <li>1 - if a single call to write data was made to the OS</li>
  <li>{@link ChannelUtils#WRITE_STATUS_SNDBUF_FULL} - if an attempt to write data was made to the OS, but no
  data was accepted</li>
  </ul>