Skip to content

Commit 5b335bc

Browse files
committed
move kryo to core
1 parent 8577029 commit 5b335bc

File tree

3 files changed

+49
-2
lines changed

3 files changed

+49
-2
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/**
2+
* @author Anders Xiao
3+
* @date 2024-06-19
4+
*/
5+
package com.labijie.caching.kryo
6+
7+
import com.esotericsoftware.kryo.Kryo
8+
import com.esotericsoftware.kryo.Serializer
9+
import com.esotericsoftware.kryo.io.Input
10+
import com.esotericsoftware.kryo.io.Output
11+
import java.time.Instant
12+
13+
14+
object InstantSerializer : Serializer<Instant>() {
15+
override fun write(kryo: Kryo, output: Output, instant: Instant) {
16+
output.writeLong(instant.toEpochMilli())
17+
}
18+
19+
override fun read(kryo: Kryo, input: Input, instantClass: Class<out Instant>): Instant {
20+
return Instant.ofEpochMilli(input.readLong())
21+
}
22+
}

core/src/main/kotlin/com/labijie/caching/kryo/KryoUtils.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ object KryoUtils {
7676
this.register(Charset::class.java, 73)
7777
this.register(URL::class.java, 74)
7878
this.register(Duration::class.java, DurationSerializer, 75)
79-
this.register(LocalDateTime::class.java, 76)
80-
this.register(Instant::class.java, 77)
79+
this.register(LocalDateTime::class.java, LocalDateTimeSerializer, 76)
80+
this.register(Instant::class.java, InstantSerializer, 77)
8181
}
8282
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/**
2+
* @author Anders Xiao
3+
* @date 2024-06-19
4+
*/
5+
package com.labijie.caching.kryo
6+
7+
import com.esotericsoftware.kryo.Kryo
8+
import com.esotericsoftware.kryo.Serializer
9+
import com.esotericsoftware.kryo.io.Input
10+
import com.esotericsoftware.kryo.io.Output
11+
import java.time.Instant
12+
import java.time.LocalDateTime
13+
import java.time.ZoneOffset
14+
15+
16+
object LocalDateTimeSerializer : Serializer<LocalDateTime>() {
17+
override fun write(kryo: Kryo, output: Output, datetime: LocalDateTime) {
18+
output.writeLong(datetime.toInstant(ZoneOffset.UTC).toEpochMilli())
19+
}
20+
21+
override fun read(kryo: Kryo, input: Input, datetime: Class<out LocalDateTime>): LocalDateTime {
22+
val instant = Instant.ofEpochMilli(input.readLong())
23+
return LocalDateTime.ofInstant(instant, ZoneOffset.UTC)
24+
}
25+
}

0 commit comments

Comments
 (0)