Skip to content

Commit 3af04ea

Browse files
committed
feat: sdk source readRemaining
1 parent 24a17b7 commit 3af04ea

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

runtime/runtime-core/api/runtime-core.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1097,6 +1097,7 @@ public abstract interface class aws/smithy/kotlin/runtime/io/SdkSource : java/io
10971097

10981098
public final class aws/smithy/kotlin/runtime/io/SdkSourceKt {
10991099
public static final fun readFully (Laws/smithy/kotlin/runtime/io/SdkSource;Laws/smithy/kotlin/runtime/io/SdkBuffer;J)V
1100+
public static final fun readRemaining (Laws/smithy/kotlin/runtime/io/SdkSource;Laws/smithy/kotlin/runtime/io/SdkBuffer;)V
11001101
public static final fun readToByteArray (Laws/smithy/kotlin/runtime/io/SdkSource;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
11011102
public static final fun toSdkByteReadChannel (Laws/smithy/kotlin/runtime/io/SdkSource;Lkotlinx/coroutines/CoroutineScope;)Laws/smithy/kotlin/runtime/io/SdkByteReadChannel;
11021103
public static synthetic fun toSdkByteReadChannel$default (Laws/smithy/kotlin/runtime/io/SdkSource;Lkotlinx/coroutines/CoroutineScope;ILjava/lang/Object;)Laws/smithy/kotlin/runtime/io/SdkByteReadChannel;

runtime/runtime-core/common/src/aws/smithy/kotlin/runtime/io/SdkSource.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,3 +110,18 @@ public fun SdkSource.readFully(sink: SdkBuffer, byteCount: Long) {
110110
totalBytesRead += rc
111111
}
112112
}
113+
114+
/**
115+
* **Caution** Reads the entire contents of the source into [sink].
116+
* This function will read until the source is exhausted and no bytes remain
117+
*
118+
* @param sink the buffer that data read from the source will be appended to
119+
*/
120+
@InternalApi
121+
public fun SdkSource.readRemaining(sink: SdkBuffer) {
122+
var readBytes: Long
123+
do {
124+
// ensure any errors are propagated by attempting to read at least once
125+
readBytes = read(sink, Long.MAX_VALUE)
126+
} while (readBytes != -1L)
127+
}

0 commit comments

Comments
 (0)