2022-06-24 14:51:26 +00:00
|
|
|
package org.signal.core.util
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Generic serialization interface for use with database and store operations.
|
|
|
|
*/
|
|
|
|
interface Serializer<T, R> {
|
|
|
|
fun serialize(data: T): R
|
|
|
|
fun deserialize(data: R): T
|
|
|
|
}
|
|
|
|
|
|
|
|
interface StringSerializer<T> : Serializer<T, String>
|
|
|
|
|
2022-10-18 20:06:37 +00:00
|
|
|
interface IntSerializer<T> : Serializer<T, Int>
|
|
|
|
|
2022-06-24 14:51:26 +00:00
|
|
|
interface LongSerializer<T> : Serializer<T, Long>
|
2022-08-03 15:50:16 +00:00
|
|
|
|
|
|
|
interface ByteSerializer<T> : Serializer<T, ByteArray>
|
2023-01-17 21:41:02 +00:00
|
|
|
|
|
|
|
object StringStringSerializer : StringSerializer<String?> {
|
|
|
|
|
|
|
|
override fun serialize(data: String?): String {
|
|
|
|
return data ?: ""
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun deserialize(data: String): String {
|
|
|
|
return data
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|