public int write()

in httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/IdentityEncoder.java [82:117]


    public int write(final ByteBuffer src) throws IOException {
        if (src == null) {
            return 0;
        }
        assertNotCompleted();

        int total = 0;
        while (src.hasRemaining()) {
            if (this.buffer.hasData() || this.fragHint > 0) {
                if (src.remaining() <= this.fragHint) {
                    final int capacity = this.fragHint - this.buffer.length();
                    if (capacity > 0) {
                        final int limit = Math.min(capacity, src.remaining());
                        final int bytesWritten = writeToBuffer(src, limit);
                        total += bytesWritten;
                    }
                }
            }
            if (this.buffer.hasData()) {
                if (this.buffer.length() >= this.fragHint || src.hasRemaining()) {
                    final int bytesWritten = flushToChannel();
                    if (bytesWritten == 0) {
                        break;
                    }
                }
            }
            if (!this.buffer.hasData() && src.remaining() > this.fragHint) {
                final int bytesWritten = writeToChannel(src);
                total += bytesWritten;
                if (bytesWritten == 0) {
                    break;
                }
            }
        }
        return total;
    }