From 1c285b1cb83887690c3074fce623a09d0a974d4b Mon Sep 17 00:00:00 2001 From: Him188 <Him188@mamoe.net> Date: Wed, 29 Jan 2020 16:26:25 +0800 Subject: [PATCH] ProtoBuf utilities --- .../net/mamoe/mirai/qqandroid/io/ProtoBuf.kt | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/io/ProtoBuf.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/io/ProtoBuf.kt index 678540fb2..2a1c9e34c 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/io/ProtoBuf.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/io/ProtoBuf.kt @@ -1,7 +1,32 @@ package net.mamoe.mirai.qqandroid.io +import kotlinx.io.core.Input +import kotlinx.io.core.readBytes +import kotlinx.serialization.DeserializationStrategy +import kotlinx.serialization.SerializationStrategy + /** * 仅有标示作用 */ -interface ProtoBuf { +interface ProtoBuf + +/** + * dump + */ +fun <T : ProtoBuf> T.toByteArray(serializer: SerializationStrategy<T>): ByteArray { + return kotlinx.serialization.protobuf.ProtoBuf.dump(serializer, this) +} + +/** + * load + */ +fun <T : ProtoBuf> ByteArray.loadAs(serializer: DeserializationStrategy<T>): T { + return kotlinx.serialization.protobuf.ProtoBuf.load(serializer, this) +} + +/** + * load + */ +fun <T : ProtoBuf> Input.readRemainingAsProtoBuf(serializer: DeserializationStrategy<T>): T { + return kotlinx.serialization.protobuf.ProtoBuf.load(serializer, this.readBytes()) } \ No newline at end of file