/** * Reads as much as possible into the destination buffer. * * @param aDestByteBuffer * The destination byte buffer to use. May not be <code>null</code>. * @return The number of bytes read. Always ≥ 0. */ @Nonnegative public long read (@Nonnull final ByteBuffer aDestByteBuffer) { ValueEnforcer.notNull (aDestByteBuffer, "DestByteBuffer"); long nBytesRead = 0; if (m_aBuffer.hasRemaining ()) nBytesRead += ByteBufferUtils.transfer (m_aBuffer, aDestByteBuffer, false); return nBytesRead; } }
nRead = _doTransfer (aSrcBuffer, aDstBuffer); if (aSrcBuffer.hasRemaining ()) aSrcBuffer.compact (); nRead = _doTransfer (aSrcBuffer, aDstBuffer);
/** * Reads as much as possible into the destination buffer. * * @param aDestByteBuffer * The destination byte buffer to use. May not be <code>null</code>. * @return The number of bytes read. Always ≥ 0. */ @Nonnegative public long read (@Nonnull final ByteBuffer aDestByteBuffer) { ValueEnforcer.notNull (aDestByteBuffer, "DestByteBuffer"); _checkClosed (); long nBytesRead = 0; while (m_nBufferIndex < m_aBuffers.length) { final ByteBuffer aByteBuffer = m_aBuffers[m_nBufferIndex]; if (aByteBuffer.hasRemaining ()) nBytesRead += ByteBufferUtils.transfer (aByteBuffer, aDestByteBuffer, false); if (!aDestByteBuffer.hasRemaining ()) break; // Try next ByteBuffer ++m_nBufferIndex; } return nBytesRead; } }