@DoesServiceRequest
    private synchronized void writeInternal(final byte[] data, int offset, int length) throws IOException {
    """
	Writes the data to the buffer and triggers writes to the service as needed.
	
	@param data
	A <code>byte</code> array which represents the data to write.
	@param offset
	An <code>int</code> which represents the start offset in the data.
	@param length
	An <code>int</code> which represents the number of bytes to write.
	
	@throws IOException
	If an I/O error occurs. In particular, an IOException may be thrown if the output stream has been
	closed.
    """
        while (length > 0) {
            this.checkStreamState();

            final int availableBufferBytes = this.internalWriteThreshold - this.currentBufferedBytes;
            final int nextWrite = Math.min(availableBufferBytes, length);

            // If we need to set MD5 then update the digest accordingly
            if (this.options.getStoreFileContentMD5()) {
                this.md5Digest.update(data, offset, nextWrite);
            }

            this.outBuffer.write(data, offset, nextWrite);
            this.currentBufferedBytes += nextWrite;
            offset += nextWrite;
            length -= nextWrite;

            if (this.currentBufferedBytes == this.internalWriteThreshold) {
                this.dispatchWrite(this.internalWriteThreshold);
            }
        }
    }
@DoesServiceRequest
    private synchronized void writeInternal(final byte[] data, int offset, int length) throws IOException {
        while (length > 0) {
            this.checkStreamState();

            final int availableBufferBytes = this.internalWriteThreshold - this.currentBufferedBytes;
            final int nextWrite = Math.min(availableBufferBytes, length);

            // If we need to set MD5 then update the digest accordingly
            if (this.options.getStoreFileContentMD5()) {
                this.md5Digest.update(data, offset, nextWrite);
            }

            this.outBuffer.write(data, offset, nextWrite);
            this.currentBufferedBytes += nextWrite;
            offset += nextWrite;
            length -= nextWrite;

            if (this.currentBufferedBytes == this.internalWriteThreshold) {
                this.dispatchWrite(this.internalWriteThreshold);
            }
        }
    }
@ DoesServiceRequest private synchronized void writeInternal ( final byte [ ] data , int offset , int length ) throws IOException { while ( length > 0 ) { this . checkStreamState ( ) ; final int availableBufferBytes = this . internalWriteThreshold - this . currentBufferedBytes ; final int nextWrite = Math . min ( availableBufferBytes , length ) ; // If we need to set MD5 then update the digest accordingly if ( this . options . getStoreFileContentMD5 ( ) ) { this . md5Digest . update ( data , offset , nextWrite ) ; } this . outBuffer . write ( data , offset , nextWrite ) ; this . currentBufferedBytes += nextWrite ; offset += nextWrite ; length -= nextWrite ; if ( this . currentBufferedBytes == this . internalWriteThreshold ) { this . dispatchWrite ( this . internalWriteThreshold ) ; } } }
Writes the data to the buffer and triggers writes to the service as needed.

@param data
A <code>byte</code> array which represents the data to write.
@param offset
An <code>int</code> which represents the start offset in the data.
@param length
An <code>int</code> which represents the number of bytes to write.

@throws IOException
If an I/O error occurs. In particular, an IOException may be thrown if the output stream has been
closed.
Writes the data to the buffer and triggers writes to the service as needed .