in aws-runtime/http-client-engine-crt/common/src/aws/sdk/kotlin/runtime/http/engine/crt/AbstractBufferedReadChannel.kt [106:125]
protected fun readAsMuchAsPossible(dest: SdkByteBuffer, limit: Int): Int {
var consumed = 0
var remaining = limit
while (availableForRead > 0 && remaining > 0) {
val segment = currSegment.getAndSet(null) ?: segments.tryReceive().getOrNull() ?: break
val rc = segment.copyTo(dest, remaining)
consumed += rc
remaining = limit - consumed
markBytesConsumed(rc)
if (segment.readRemaining > 0u) {
currSegment.update { segment }
}
}
return consumed
}