Skip to content

Commit 25b2fa4

Browse files
committed
Proof of concept: Add implementation for computing the required bytes to encode a message
This commit introduces a new API which computes the required bytes to encode a message without actually serializing a message. By extension, this API is meant to be used as a cornerstone for implementing Kotlin#2075. Signed-off-by: George Papadopoulos <[email protected]>
1 parent 0a680d3 commit 25b2fa4

File tree

13 files changed

+1301
-29
lines changed

13 files changed

+1301
-29
lines changed

formats/protobuf/api/kotlinx-serialization-protobuf.api

+4
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ public final class kotlinx/serialization/protobuf/ProtoBufKt {
3030
public static synthetic fun ProtoBuf$default (Lkotlinx/serialization/protobuf/ProtoBuf;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlinx/serialization/protobuf/ProtoBuf;
3131
}
3232

33+
public final class kotlinx/serialization/protobuf/ProtoBufSerializedSizeCalculatorKt {
34+
public static final fun getOrComputeSerializedSize (Lkotlinx/serialization/protobuf/ProtoBuf;Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)I
35+
}
36+
3337
public final class kotlinx/serialization/protobuf/ProtoIntegerType : java/lang/Enum {
3438
public static final field DEFAULT Lkotlinx/serialization/protobuf/ProtoIntegerType;
3539
public static final field FIXED Lkotlinx/serialization/protobuf/ProtoIntegerType;

formats/protobuf/build.gradle

+4
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ kotlin {
2626
commonMain {
2727
dependencies {
2828
api project(":kotlinx-serialization-core")
29+
/*
30+
* as workaround for compiler-plugin.
31+
*/
32+
implementation 'org.jetbrains.kotlin:kotlin-reflect'
2933
}
3034
}
3135

formats/protobuf/commonMain/src/kotlinx/serialization/protobuf/ProtoBuf.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
package kotlinx.serialization.protobuf
66

77
import kotlinx.serialization.*
8-
import kotlinx.serialization.modules.*
8+
import kotlinx.serialization.modules.EmptySerializersModule
9+
import kotlinx.serialization.modules.SerializersModule
910
import kotlinx.serialization.protobuf.internal.*
10-
import kotlin.js.*
1111

1212
/**
1313
* Implements [encoding][encodeToByteArray] and [decoding][decodeFromByteArray] classes to/from bytes
@@ -168,4 +168,4 @@ public class ProtoBufBuilder internal constructor(proto: ProtoBuf) {
168168

169169
@ExperimentalSerializationApi
170170
private class ProtoBufImpl(encodeDefaults: Boolean, serializersModule: SerializersModule) :
171-
ProtoBuf(encodeDefaults, serializersModule)
171+
ProtoBuf(encodeDefaults, serializersModule)

0 commit comments

Comments
 (0)