From f68ce407cadfd304884a5ac25291833b992c2c51 Mon Sep 17 00:00:00 2001 From: Robinson Date: Sun, 22 Aug 2021 12:30:27 -0600 Subject: [PATCH] Added more serializers --- .../serializers/Inet4AddressSerializer.kt | 19 +++++++++++++++++++ .../serializers/Inet6AddressSerializer.kt | 19 +++++++++++++++++++ src/dorkbox/serializers/ZoneIdSerializer.kt | 17 +++++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 src/dorkbox/serializers/Inet4AddressSerializer.kt create mode 100644 src/dorkbox/serializers/Inet6AddressSerializer.kt create mode 100644 src/dorkbox/serializers/ZoneIdSerializer.kt diff --git a/src/dorkbox/serializers/Inet4AddressSerializer.kt b/src/dorkbox/serializers/Inet4AddressSerializer.kt new file mode 100644 index 0000000..e7668f2 --- /dev/null +++ b/src/dorkbox/serializers/Inet4AddressSerializer.kt @@ -0,0 +1,19 @@ +package dorkbox.serializers + +import com.esotericsoftware.kryo.Kryo +import com.esotericsoftware.kryo.Serializer +import com.esotericsoftware.kryo.io.Input +import com.esotericsoftware.kryo.io.Output +import java.net.Inet4Address +import java.net.InetAddress + +class Inet4AddressSerializer : Serializer() { + + override fun write(kryo: Kryo, output: Output, inetAddress: Inet4Address) { + output.writeBytes(inetAddress.address) + } + + override fun read(kryo: Kryo, input: Input, type: Class): Inet4Address { + return InetAddress.getByAddress(null, input.readBytes(4)) as Inet4Address + } +} diff --git a/src/dorkbox/serializers/Inet6AddressSerializer.kt b/src/dorkbox/serializers/Inet6AddressSerializer.kt new file mode 100644 index 0000000..421e99c --- /dev/null +++ b/src/dorkbox/serializers/Inet6AddressSerializer.kt @@ -0,0 +1,19 @@ +package dorkbox.serializers + +import com.esotericsoftware.kryo.Kryo +import com.esotericsoftware.kryo.Serializer +import com.esotericsoftware.kryo.io.Input +import com.esotericsoftware.kryo.io.Output +import java.net.Inet6Address +import java.net.InetAddress + +class Inet6AddressSerializer : Serializer() { + + override fun write(kryo: Kryo, output: Output, inetAddress: Inet6Address) { + output.writeBytes(inetAddress.address) // 16 bytes + } + + override fun read(kryo: Kryo, input: Input, type: Class): Inet6Address { + return InetAddress.getByAddress(input.readBytes(16)) as Inet6Address + } +} diff --git a/src/dorkbox/serializers/ZoneIdSerializer.kt b/src/dorkbox/serializers/ZoneIdSerializer.kt new file mode 100644 index 0000000..e635748 --- /dev/null +++ b/src/dorkbox/serializers/ZoneIdSerializer.kt @@ -0,0 +1,17 @@ +package dorkbox.serializers + +import com.esotericsoftware.kryo.Kryo +import com.esotericsoftware.kryo.Serializer +import com.esotericsoftware.kryo.io.Input +import com.esotericsoftware.kryo.io.Output +import java.time.ZoneId + +class ZoneIdSerializer: Serializer() { + override fun write(kryo: Kryo, output: Output, zoneId: ZoneId) { + output.writeString(zoneId.id) + } + + override fun read(kryo: Kryo, input: Input, type: Class): ZoneId { + return ZoneId.of(input.readString()) + } +}