Skip to content

Commit bbead14

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 3310495 commit bbead14

File tree

11 files changed

+1259
-29
lines changed

11 files changed

+1259
-29
lines changed

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

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

24+
public final class kotlinx/serialization/protobuf/ProtoBufSerializedSizeCalculatorKt {
25+
public static final fun getOrComputeSerializedSize (Lkotlinx/serialization/protobuf/ProtoBuf;Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)I
26+
}
27+
2428
public final class kotlinx/serialization/protobuf/ProtoIntegerType : java/lang/Enum {
2529
public static final field DEFAULT Lkotlinx/serialization/protobuf/ProtoIntegerType;
2630
public static final field FIXED Lkotlinx/serialization/protobuf/ProtoIntegerType;

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)