Skip to content

Commit cc52be1

Browse files
Remove protobuf from the public api of sdk-common (#321)
1 parent 1a5817c commit cc52be1

File tree

31 files changed

+270
-199
lines changed

31 files changed

+270
-199
lines changed

sdk-api-kotlin/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ dependencies {
2222
testImplementation(testingLibs.junit.jupiter)
2323
testImplementation(testingLibs.assertj)
2424
testImplementation(coreLibs.log4j.core)
25+
testImplementation(coreLibs.protobuf.java)
2526

2627
testImplementation(project(":sdk-core", "testArchive"))
2728
}

sdk-api-kotlin/src/main/kotlin/dev/restate/sdk/kotlin/Awaitables.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
// https://github.com/restatedev/sdk-java/blob/main/LICENSE
99
package dev.restate.sdk.kotlin
1010

11-
import com.google.protobuf.ByteString
1211
import dev.restate.sdk.common.Serde
1312
import dev.restate.sdk.common.syscalls.Deferred
1413
import dev.restate.sdk.common.syscalls.Result
1514
import dev.restate.sdk.common.syscalls.Syscalls
15+
import java.nio.ByteBuffer
1616
import kotlinx.coroutines.CancellableContinuation
1717
import kotlinx.coroutines.suspendCancellableCoroutine
1818

@@ -79,14 +79,14 @@ internal abstract class BaseSingleMappedAwaitableImpl<T : Any, U : Any>(
7979
internal open class SingleSerdeAwaitableImpl<T : Any>
8080
internal constructor(
8181
syscalls: Syscalls,
82-
deferred: Deferred<ByteString>,
82+
deferred: Deferred<ByteBuffer>,
8383
private val serde: Serde<T>,
8484
) :
85-
BaseSingleMappedAwaitableImpl<ByteString, T>(
85+
BaseSingleMappedAwaitableImpl<ByteBuffer, T>(
8686
SingleAwaitableImpl(syscalls, deferred),
8787
) {
8888
@Suppress("UNCHECKED_CAST")
89-
override suspend fun map(res: Result<ByteString>): Result<T> {
89+
override suspend fun map(res: Result<ByteBuffer>): Result<T> {
9090
return if (res.isSuccess) {
9191
// This propagates exceptions as non-terminal
9292
Result.success(serde.deserializeWrappingException(syscalls, res.value!!))
@@ -151,7 +151,7 @@ internal fun wrapAnyAwaitable(awaitables: List<Awaitable<*>>): AnyAwaitable {
151151
internal class AwakeableImpl<T : Any>
152152
internal constructor(
153153
syscalls: Syscalls,
154-
deferred: Deferred<ByteString>,
154+
deferred: Deferred<ByteBuffer>,
155155
serde: Serde<T>,
156156
override val id: String
157157
) : SingleSerdeAwaitableImpl<T>(syscalls, deferred, serde), Awakeable<T> {}

sdk-api-kotlin/src/main/kotlin/dev/restate/sdk/kotlin/ContextImpl.kt

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
// https://github.com/restatedev/sdk-java/blob/main/LICENSE
99
package dev.restate.sdk.kotlin
1010

11-
import com.google.protobuf.ByteString
1211
import dev.restate.sdk.common.*
1312
import dev.restate.sdk.common.Target
1413
import dev.restate.sdk.common.syscalls.Deferred
1514
import dev.restate.sdk.common.syscalls.EnterSideEffectSyscallCallback
1615
import dev.restate.sdk.common.syscalls.ExitSideEffectSyscallCallback
1716
import dev.restate.sdk.common.syscalls.Syscalls
17+
import java.nio.ByteBuffer
1818
import kotlin.coroutines.resume
1919
import kotlin.time.Duration
2020
import kotlin.time.toJavaDuration
@@ -33,8 +33,8 @@ internal class ContextImpl internal constructor(private val syscalls: Syscalls)
3333
}
3434

3535
override suspend fun <T : Any> get(key: StateKey<T>): T? {
36-
val deferred: Deferred<ByteString> =
37-
suspendCancellableCoroutine { cont: CancellableContinuation<Deferred<ByteString>> ->
36+
val deferred: Deferred<ByteBuffer> =
37+
suspendCancellableCoroutine { cont: CancellableContinuation<Deferred<ByteBuffer>> ->
3838
syscalls.get(key.name(), completingContinuation(cont))
3939
}
4040

@@ -109,8 +109,8 @@ internal class ContextImpl internal constructor(private val syscalls: Syscalls)
109109
): Awaitable<R> {
110110
val input = inputSerde.serializeWrappingException(syscalls, parameter)
111111

112-
val deferred: Deferred<ByteString> =
113-
suspendCancellableCoroutine { cont: CancellableContinuation<Deferred<ByteString>> ->
112+
val deferred: Deferred<ByteBuffer> =
113+
suspendCancellableCoroutine { cont: CancellableContinuation<Deferred<ByteBuffer>> ->
114114
syscalls.call(target, input, completingContinuation(cont))
115115
}
116116

@@ -136,19 +136,19 @@ internal class ContextImpl internal constructor(private val syscalls: Syscalls)
136136
block: suspend () -> T
137137
): T {
138138
val exitResult =
139-
suspendCancellableCoroutine { cont: CancellableContinuation<CompletableDeferred<ByteString>>
139+
suspendCancellableCoroutine { cont: CancellableContinuation<CompletableDeferred<ByteBuffer>>
140140
->
141141
syscalls.enterSideEffectBlock(
142142
name,
143143
object : EnterSideEffectSyscallCallback {
144-
override fun onSuccess(t: ByteString?) {
145-
val deferred: CompletableDeferred<ByteString> = CompletableDeferred()
144+
override fun onSuccess(t: ByteBuffer?) {
145+
val deferred: CompletableDeferred<ByteBuffer> = CompletableDeferred()
146146
deferred.complete(t!!)
147147
cont.resume(deferred)
148148
}
149149

150150
override fun onFailure(t: TerminalException) {
151-
val deferred: CompletableDeferred<ByteString> = CompletableDeferred()
151+
val deferred: CompletableDeferred<ByteBuffer> = CompletableDeferred()
152152
deferred.completeExceptionally(t)
153153
cont.resume(deferred)
154154
}
@@ -182,7 +182,7 @@ internal class ContextImpl internal constructor(private val syscalls: Syscalls)
182182

183183
val exitCallback =
184184
object : ExitSideEffectSyscallCallback {
185-
override fun onSuccess(t: ByteString?) {
185+
override fun onSuccess(t: ByteBuffer?) {
186186
exitResult.complete(t!!)
187187
}
188188

@@ -208,7 +208,7 @@ internal class ContextImpl internal constructor(private val syscalls: Syscalls)
208208
override suspend fun <T : Any> awakeable(serde: Serde<T>): Awakeable<T> {
209209
val (aid, deferredResult) =
210210
suspendCancellableCoroutine {
211-
cont: CancellableContinuation<Map.Entry<String, Deferred<ByteString>>> ->
211+
cont: CancellableContinuation<Map.Entry<String, Deferred<ByteBuffer>>> ->
212212
syscalls.awakeable(completingContinuation(cont))
213213
}
214214

@@ -234,17 +234,17 @@ internal class ContextImpl internal constructor(private val syscalls: Syscalls)
234234
inner class DurablePromiseImpl<T : Any>(private val key: DurablePromiseKey<T>) :
235235
DurablePromise<T> {
236236
override suspend fun awaitable(): Awaitable<T> {
237-
val deferred: Deferred<ByteString> =
238-
suspendCancellableCoroutine { cont: CancellableContinuation<Deferred<ByteString>> ->
237+
val deferred: Deferred<ByteBuffer> =
238+
suspendCancellableCoroutine { cont: CancellableContinuation<Deferred<ByteBuffer>> ->
239239
syscalls.promise(key.name(), completingContinuation(cont))
240240
}
241241

242242
return SingleSerdeAwaitableImpl(syscalls, deferred, key.serde())
243243
}
244244

245245
override suspend fun peek(): T? {
246-
val deferred: Deferred<ByteString> =
247-
suspendCancellableCoroutine { cont: CancellableContinuation<Deferred<ByteString>> ->
246+
val deferred: Deferred<ByteBuffer> =
247+
suspendCancellableCoroutine { cont: CancellableContinuation<Deferred<ByteBuffer>> ->
248248
syscalls.peekPromise(key.name(), completingContinuation(cont))
249249
}
250250

@@ -265,8 +265,8 @@ internal class ContextImpl internal constructor(private val syscalls: Syscalls)
265265
}
266266

267267
override suspend fun isCompleted(): Boolean {
268-
val deferred: Deferred<ByteString> =
269-
suspendCancellableCoroutine { cont: CancellableContinuation<Deferred<ByteString>> ->
268+
val deferred: Deferred<ByteBuffer> =
269+
suspendCancellableCoroutine { cont: CancellableContinuation<Deferred<ByteBuffer>> ->
270270
syscalls.peekPromise(key.name(), completingContinuation(cont))
271271
}
272272

sdk-api-kotlin/src/main/kotlin/dev/restate/sdk/kotlin/HandlerRunner.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88
// https://github.com/restatedev/sdk-java/blob/main/LICENSE
99
package dev.restate.sdk.kotlin
1010

11-
import com.google.protobuf.ByteString
1211
import dev.restate.sdk.common.TerminalException
1312
import dev.restate.sdk.common.syscalls.HandlerSpecification
1413
import dev.restate.sdk.common.syscalls.SyscallCallback
1514
import dev.restate.sdk.common.syscalls.Syscalls
1615
import io.opentelemetry.extension.kotlin.asContextElement
16+
import java.nio.ByteBuffer
1717
import kotlin.coroutines.CoroutineContext
1818
import kotlinx.coroutines.CoroutineScope
1919
import kotlinx.coroutines.Dispatchers
@@ -45,7 +45,7 @@ internal constructor(
4545
handlerSpecification: HandlerSpecification<REQ, RES>,
4646
syscalls: Syscalls,
4747
options: Options?,
48-
callback: SyscallCallback<ByteString>
48+
callback: SyscallCallback<ByteBuffer>
4949
) {
5050
val ctx: Context = ContextImpl(syscalls)
5151

@@ -57,7 +57,7 @@ internal constructor(
5757
.asContextElement(syscalls) +
5858
syscalls.request().otelContext()!!.asContextElement())
5959
scope.launch {
60-
val serializedResult: ByteString
60+
val serializedResult: ByteBuffer
6161

6262
try {
6363
// Parse input
@@ -77,7 +77,7 @@ internal constructor(
7777

7878
// Serialize output
7979
try {
80-
serializedResult = handlerSpecification.responseSerde.serializeToByteString(res)
80+
serializedResult = handlerSpecification.responseSerde.serializeToByteBuffer(res)
8181
} catch (e: Error) {
8282
throw e
8383
} catch (e: Throwable) {

sdk-api-kotlin/src/main/kotlin/dev/restate/sdk/kotlin/KtSerdes.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
// https://github.com/restatedev/sdk-java/blob/main/LICENSE
99
package dev.restate.sdk.kotlin
1010

11-
import com.google.protobuf.ByteString
1211
import dev.restate.sdk.common.DurablePromiseKey
1312
import dev.restate.sdk.common.Serde
1413
import dev.restate.sdk.common.StateKey
14+
import java.nio.ByteBuffer
1515
import java.nio.charset.StandardCharsets
1616
import kotlin.reflect.typeOf
1717
import kotlinx.serialization.KSerializer
@@ -51,15 +51,15 @@ object KtSerdes {
5151
return ByteArray(0)
5252
}
5353

54-
override fun serializeToByteString(value: Unit?): ByteString {
55-
return ByteString.EMPTY
54+
override fun serializeToByteBuffer(value: Unit?): ByteBuffer {
55+
return ByteBuffer.allocate(0)
5656
}
5757

5858
override fun deserialize(value: ByteArray) {
5959
return
6060
}
6161

62-
override fun deserialize(byteString: ByteString) {
62+
override fun deserialize(byteBuffer: ByteBuffer) {
6363
return
6464
}
6565

@@ -71,12 +71,12 @@ object KtSerdes {
7171
/** Creates a [Serde] implementation using the `kotlinx.serialization` json module. */
7272
fun <T> json(serializer: KSerializer<T>): Serde<T> {
7373
return object : Serde<T> {
74-
override fun serialize(value: T?): ByteArray {
74+
override fun serialize(value: T): ByteArray {
7575
return Json.encodeToString(serializer, value!!).encodeToByteArray()
7676
}
7777

78-
override fun deserialize(value: ByteArray?): T {
79-
return Json.decodeFromString(serializer, String(value!!, StandardCharsets.UTF_8))
78+
override fun deserialize(value: ByteArray): T {
79+
return Json.decodeFromString(serializer, String(value, StandardCharsets.UTF_8))
8080
}
8181

8282
override fun contentType(): String {

sdk-api-kotlin/src/main/kotlin/dev/restate/sdk/kotlin/Util.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
// https://github.com/restatedev/sdk-java/blob/main/LICENSE
99
package dev.restate.sdk.kotlin
1010

11-
import com.google.protobuf.ByteString
1211
import dev.restate.sdk.common.Serde
1312
import dev.restate.sdk.common.syscalls.SyscallCallback
1413
import dev.restate.sdk.common.syscalls.Syscalls
14+
import java.nio.ByteBuffer
1515
import kotlin.coroutines.resume
1616
import kotlinx.coroutines.CancellableContinuation
1717
import kotlinx.coroutines.CancellationException
@@ -32,9 +32,9 @@ internal fun completingUnitContinuation(
3232
internal fun <T : Any?> Serde<T>.serializeWrappingException(
3333
syscalls: Syscalls,
3434
value: T?
35-
): ByteString? {
35+
): ByteBuffer {
3636
return try {
37-
this.serializeToByteString(value)
37+
this.serializeToByteBuffer(value)
3838
} catch (e: Exception) {
3939
syscalls.fail(e)
4040
throw CancellationException("Failed serialization", e)
@@ -43,10 +43,10 @@ internal fun <T : Any?> Serde<T>.serializeWrappingException(
4343

4444
internal fun <T : Any?> Serde<T>.deserializeWrappingException(
4545
syscalls: Syscalls,
46-
byteString: ByteString
46+
ByteBuffer: ByteBuffer
4747
): T {
4848
return try {
49-
this.deserialize(byteString)
49+
this.deserialize(ByteBuffer)
5050
} catch (e: Exception) {
5151
syscalls.fail(e)
5252
throw CancellationException("Failed deserialization", e)

sdk-api/src/main/java/dev/restate/sdk/Awakeable.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
// https://github.com/restatedev/sdk-java/blob/main/LICENSE
99
package dev.restate.sdk;
1010

11-
import com.google.protobuf.ByteString;
1211
import dev.restate.sdk.common.Serde;
1312
import dev.restate.sdk.common.syscalls.Deferred;
1413
import dev.restate.sdk.common.syscalls.Result;
1514
import dev.restate.sdk.common.syscalls.Syscalls;
15+
import java.nio.ByteBuffer;
1616

1717
/**
1818
* An {@link Awakeable} is a special type of {@link Awaitable} which can be arbitrarily completed by
@@ -28,11 +28,11 @@
2828
* <p>NOTE: This interface MUST NOT be accessed concurrently since it can lead to different
2929
* orderings of user actions, corrupting the execution of the invocation.
3030
*/
31-
public final class Awakeable<T> extends Awaitable.MappedAwaitable<ByteString, T> {
31+
public final class Awakeable<T> extends Awaitable.MappedAwaitable<ByteBuffer, T> {
3232

3333
private final String identifier;
3434

35-
Awakeable(Syscalls syscalls, Deferred<ByteString> deferred, Serde<T> serde, String identifier) {
35+
Awakeable(Syscalls syscalls, Deferred<ByteBuffer> deferred, Serde<T> serde, String identifier) {
3636
super(
3737
Awaitable.single(syscalls, deferred),
3838
res -> {

0 commit comments

Comments
 (0)