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