This repository was archived by the owner on Dec 10, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 3 files changed +54
-0
lines changed
surf-cloud-api/surf-cloud-api-common/src/main/kotlin/dev/slne/surf/cloud/api/common/netty/network/codec/kotlinx Expand file tree Collapse file tree 3 files changed +54
-0
lines changed Original file line number Diff line number Diff line change @@ -29,6 +29,8 @@ object SurfCloudBufSerializer {
2929 contextual(InetSocketAddressSerializer )
3030 contextual(ZonedDateTimeSerializer )
3131 contextual(Inet4AddressSerializer )
32+ contextual(BigDecimalSerializer )
33+ contextual(BigIntegerSerializer )
3234
3335 // Kotlin
3436 contextual(DurationSerializer )
Original file line number Diff line number Diff line change 1+ package dev.slne.surf.cloud.api.common.netty.network.codec.kotlinx.java
2+
3+ import kotlinx.serialization.KSerializer
4+ import kotlinx.serialization.Serializable
5+ import kotlinx.serialization.descriptors.PrimitiveKind
6+ import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
7+ import kotlinx.serialization.encoding.Decoder
8+ import kotlinx.serialization.encoding.Encoder
9+ import java.math.BigDecimal
10+
11+ typealias SerializableBigDecimal = @Serializable(with = BigDecimalSerializer ::class ) BigDecimal
12+
13+ object BigDecimalSerializer : KSerializer<BigDecimal> {
14+ override val descriptor = PrimitiveSerialDescriptor (" BigDecimal" , PrimitiveKind .STRING )
15+
16+ override fun serialize (
17+ encoder : Encoder ,
18+ value : BigDecimal
19+ ) {
20+ encoder.encodeString(value.toString())
21+ }
22+
23+ override fun deserialize (decoder : Decoder ): BigDecimal {
24+ return BigDecimal (decoder.decodeString())
25+ }
26+ }
Original file line number Diff line number Diff line change 1+ package dev.slne.surf.cloud.api.common.netty.network.codec.kotlinx.java
2+
3+ import kotlinx.serialization.KSerializer
4+ import kotlinx.serialization.Serializable
5+ import kotlinx.serialization.descriptors.PrimitiveKind
6+ import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
7+ import kotlinx.serialization.encoding.Decoder
8+ import kotlinx.serialization.encoding.Encoder
9+ import java.math.BigInteger
10+
11+ typealias SerializableBigInteger = @Serializable(with = BigIntegerSerializer ::class ) BigInteger
12+
13+ object BigIntegerSerializer : KSerializer<BigInteger> {
14+ override val descriptor = PrimitiveSerialDescriptor (" BigInteger" , PrimitiveKind .STRING )
15+
16+ override fun serialize (
17+ encoder : Encoder ,
18+ value : BigInteger
19+ ) {
20+ encoder.encodeString(value.toString())
21+ }
22+
23+ override fun deserialize (decoder : Decoder ): BigInteger {
24+ return BigInteger (decoder.decodeString())
25+ }
26+ }
You can’t perform that action at this time.
0 commit comments