mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-26 23:50:16 +08:00
Cleanup and move local serializable classes to top-level
This commit is contained in:
parent
813ef2b1e6
commit
c37457cafb
@ -47,7 +47,7 @@ public annotation class MiraiInternalFile
|
|||||||
*/
|
*/
|
||||||
@Retention(AnnotationRetention.BINARY)
|
@Retention(AnnotationRetention.BINARY)
|
||||||
@RequiresOptIn(level = RequiresOptIn.Level.WARNING)
|
@RequiresOptIn(level = RequiresOptIn.Level.WARNING)
|
||||||
@Target(CLASS, TYPEALIAS, FUNCTION, PROPERTY, FIELD, CONSTRUCTOR)
|
@Target(CLASS, TYPEALIAS, FUNCTION, PROPERTY, FIELD, CONSTRUCTOR, TYPE)
|
||||||
@MustBeDocumented
|
@MustBeDocumented
|
||||||
public annotation class MiraiExperimentalApi(
|
public annotation class MiraiExperimentalApi(
|
||||||
public val message: String = ""
|
public val message: String = ""
|
||||||
|
@ -107,9 +107,8 @@ public class DeviceInfo(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun DeviceInfo.generateDeviceInfoData(): ByteArray {
|
|
||||||
@Serializable
|
@Serializable
|
||||||
class DevInfo(
|
private class DevInfo(
|
||||||
@ProtoNumber(1) val bootloader: ByteArray,
|
@ProtoNumber(1) val bootloader: ByteArray,
|
||||||
@ProtoNumber(2) val procVersion: ByteArray,
|
@ProtoNumber(2) val procVersion: ByteArray,
|
||||||
@ProtoNumber(3) val codename: ByteArray,
|
@ProtoNumber(3) val codename: ByteArray,
|
||||||
@ -121,6 +120,7 @@ public fun DeviceInfo.generateDeviceInfoData(): ByteArray {
|
|||||||
@ProtoNumber(9) val innerVersion: ByteArray
|
@ProtoNumber(9) val innerVersion: ByteArray
|
||||||
)
|
)
|
||||||
|
|
||||||
|
public fun DeviceInfo.generateDeviceInfoData(): ByteArray {
|
||||||
return ProtoBuf.encodeToByteArray(
|
return ProtoBuf.encodeToByteArray(
|
||||||
DevInfo.serializer(), DevInfo(
|
DevInfo.serializer(), DevInfo(
|
||||||
bootloader,
|
bootloader,
|
||||||
|
@ -39,7 +39,7 @@ internal data class MarketFaceImpl internal constructor(
|
|||||||
* For refinement
|
* For refinement
|
||||||
*/
|
*/
|
||||||
internal class MarketFaceInternal(
|
internal class MarketFaceInternal(
|
||||||
@JvmField private val delegate: ImMsgBody.MarketFace,
|
private val delegate: ImMsgBody.MarketFace,
|
||||||
) : MarketFace, RefinableMessage {
|
) : MarketFace, RefinableMessage {
|
||||||
override val name: String get() = delegate.faceName.decodeToString()
|
override val name: String get() = delegate.faceName.decodeToString()
|
||||||
override val id: Int get() = delegate.tabId
|
override val id: Int get() = delegate.tabId
|
||||||
|
@ -93,7 +93,7 @@ internal abstract class AbstractKeepAliveNetworkHandlerSelector<H : NetworkHandl
|
|||||||
}
|
}
|
||||||
|
|
||||||
return if (current != null) {
|
return if (current != null) {
|
||||||
when (val thisState = current.state) {
|
when (current.state) {
|
||||||
NetworkHandler.State.CLOSED -> {
|
NetworkHandler.State.CLOSED -> {
|
||||||
if (this@AbstractKeepAliveNetworkHandlerSelector.current.compareAndSet(current, null)) {
|
if (this@AbstractKeepAliveNetworkHandlerSelector.current.compareAndSet(current, null)) {
|
||||||
// invalidate the instance and try again.
|
// invalidate the instance and try again.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2019-2020 Mamoe Technologies and contributors.
|
* Copyright 2019-2021 Mamoe Technologies and contributors.
|
||||||
*
|
*
|
||||||
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
|
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
|
||||||
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
||||||
@ -51,7 +51,7 @@ internal class LongConn {
|
|||||||
check(resp.subcmd == 1)
|
check(resp.subcmd == 1)
|
||||||
val imgRsp = resp.msgTryupImgRsp.first()
|
val imgRsp = resp.msgTryupImgRsp.first()
|
||||||
if (imgRsp.result != 0) {
|
if (imgRsp.result != 0) {
|
||||||
return Response.Failed(imgRsp.failMsg ?: "")
|
return Response.Failed(imgRsp.failMsg)
|
||||||
}
|
}
|
||||||
|
|
||||||
return if (imgRsp.boolFileExit) {
|
return if (imgRsp.boolFileExit) {
|
||||||
|
@ -228,7 +228,7 @@ internal object MessageSvcPbGetMsg : OutgoingPacketFactory<MessageSvcPbGetMsg.Re
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun QQAndroidBot.createGroupForBot(groupUin: Long): Group? {
|
internal suspend fun QQAndroidBot.createGroupForBot(groupUin: Long): Group? {
|
||||||
val group = getGroupByUinOrNull(groupUin)
|
val group = getGroupByUinOrNull(groupUin)
|
||||||
if (group != null) {
|
if (group != null) {
|
||||||
return null
|
return null
|
||||||
|
@ -7,9 +7,6 @@
|
|||||||
* https://github.com/mamoe/mirai/blob/master/LICENSE
|
* https://github.com/mamoe/mirai/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
|
|
||||||
@file:OptIn(JavaFriendlyAPI::class)
|
|
||||||
|
|
||||||
package net.mamoe.mirai.internal.network.protocol.packet.chat.receive
|
package net.mamoe.mirai.internal.network.protocol.packet.chat.receive
|
||||||
|
|
||||||
import kotlinx.coroutines.CancellationException
|
import kotlinx.coroutines.CancellationException
|
||||||
@ -22,8 +19,11 @@ import net.mamoe.mirai.contact.MemberPermission
|
|||||||
import net.mamoe.mirai.contact.NormalMember
|
import net.mamoe.mirai.contact.NormalMember
|
||||||
import net.mamoe.mirai.event.events.*
|
import net.mamoe.mirai.event.events.*
|
||||||
import net.mamoe.mirai.internal.QQAndroidBot
|
import net.mamoe.mirai.internal.QQAndroidBot
|
||||||
import net.mamoe.mirai.internal.contact.*
|
import net.mamoe.mirai.internal.contact.GroupImpl
|
||||||
|
import net.mamoe.mirai.internal.contact.NormalMemberImpl
|
||||||
|
import net.mamoe.mirai.internal.contact.checkIsMemberImpl
|
||||||
import net.mamoe.mirai.internal.contact.info.MemberInfoImpl
|
import net.mamoe.mirai.internal.contact.info.MemberInfoImpl
|
||||||
|
import net.mamoe.mirai.internal.contact.newMember
|
||||||
import net.mamoe.mirai.internal.message.contextualBugReportException
|
import net.mamoe.mirai.internal.message.contextualBugReportException
|
||||||
import net.mamoe.mirai.internal.network.MultiPacketByIterable
|
import net.mamoe.mirai.internal.network.MultiPacketByIterable
|
||||||
import net.mamoe.mirai.internal.network.Packet
|
import net.mamoe.mirai.internal.network.Packet
|
||||||
@ -34,7 +34,8 @@ import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket
|
|||||||
import net.mamoe.mirai.internal.network.protocol.packet.buildResponseUniPacket
|
import net.mamoe.mirai.internal.network.protocol.packet.buildResponseUniPacket
|
||||||
import net.mamoe.mirai.internal.utils._miraiContentToString
|
import net.mamoe.mirai.internal.utils._miraiContentToString
|
||||||
import net.mamoe.mirai.internal.utils.io.serialization.readProtoBuf
|
import net.mamoe.mirai.internal.utils.io.serialization.readProtoBuf
|
||||||
import net.mamoe.mirai.utils.*
|
import net.mamoe.mirai.utils.cast
|
||||||
|
import net.mamoe.mirai.utils.read
|
||||||
|
|
||||||
|
|
||||||
internal object OnlinePushPbPushTransMsg :
|
internal object OnlinePushPbPushTransMsg :
|
||||||
|
@ -49,7 +49,6 @@ import net.mamoe.mirai.internal.network.protocol.packet.sendAndExpect
|
|||||||
import net.mamoe.mirai.internal.utils.*
|
import net.mamoe.mirai.internal.utils.*
|
||||||
import net.mamoe.mirai.internal.utils.io.ProtoBuf
|
import net.mamoe.mirai.internal.utils.io.ProtoBuf
|
||||||
import net.mamoe.mirai.internal.utils.io.serialization.*
|
import net.mamoe.mirai.internal.utils.io.serialization.*
|
||||||
import net.mamoe.mirai.internal.utils.parseToMessageDataList
|
|
||||||
import net.mamoe.mirai.utils.*
|
import net.mamoe.mirai.utils.*
|
||||||
|
|
||||||
|
|
||||||
@ -517,24 +516,14 @@ internal inline fun lambda528(crossinline block: suspend MsgType0x210.(QQAndroid
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// uSubMsgType to vProtobuf
|
|
||||||
// 138 or 139: top_package/akln.java:1568
|
|
||||||
// 66: top_package/nhz.java:269
|
|
||||||
/**
|
|
||||||
* @see MsgType0x210
|
|
||||||
*/
|
|
||||||
@OptIn(ExperimentalStdlibApi::class)
|
|
||||||
internal object Transformers528 : Map<Long, Lambda528> by mapOf(
|
|
||||||
|
|
||||||
0x8AL to lambda528 { bot ->
|
|
||||||
@Serializable
|
@Serializable
|
||||||
class Wording(
|
private class Wording(
|
||||||
@ProtoNumber(1) val itemID: Int = 0,
|
@ProtoNumber(1) val itemID: Int = 0,
|
||||||
@ProtoNumber(2) val itemName: String = ""
|
@ProtoNumber(2) val itemName: String = ""
|
||||||
) : ProtoBuf
|
) : ProtoBuf
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
class Sub8AMsgInfo(
|
private class Sub8AMsgInfo(
|
||||||
@ProtoNumber(1) val fromUin: Long,
|
@ProtoNumber(1) val fromUin: Long,
|
||||||
@ProtoNumber(2) val botUin: Long,
|
@ProtoNumber(2) val botUin: Long,
|
||||||
@ProtoNumber(3) val srcId: Int,
|
@ProtoNumber(3) val srcId: Int,
|
||||||
@ -549,7 +538,7 @@ internal object Transformers528 : Map<Long, Lambda528> by mapOf(
|
|||||||
) : ProtoBuf
|
) : ProtoBuf
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
class Sub8A(
|
private class Sub8A(
|
||||||
@ProtoNumber(1) val msgInfo: List<Sub8AMsgInfo>,
|
@ProtoNumber(1) val msgInfo: List<Sub8AMsgInfo>,
|
||||||
@ProtoNumber(2) val appId: Int, // 1
|
@ProtoNumber(2) val appId: Int, // 1
|
||||||
@ProtoNumber(3) val instId: Int, // 1
|
@ProtoNumber(3) val instId: Int, // 1
|
||||||
@ -557,6 +546,18 @@ internal object Transformers528 : Map<Long, Lambda528> by mapOf(
|
|||||||
@ProtoNumber(5) val reserved: ByteArray? = null // struct{ boolean(1), boolean(2) }
|
@ProtoNumber(5) val reserved: ByteArray? = null // struct{ boolean(1), boolean(2) }
|
||||||
) : ProtoBuf
|
) : ProtoBuf
|
||||||
|
|
||||||
|
|
||||||
|
// uSubMsgType to vProtobuf
|
||||||
|
// 138 or 139: top_package/akln.java:1568
|
||||||
|
// 66: top_package/nhz.java:269
|
||||||
|
/**
|
||||||
|
* @see MsgType0x210
|
||||||
|
*/
|
||||||
|
@OptIn(ExperimentalStdlibApi::class)
|
||||||
|
internal object Transformers528 : Map<Long, Lambda528> by mapOf(
|
||||||
|
|
||||||
|
0x8AL to lambda528 { bot ->
|
||||||
|
|
||||||
return@lambda528 vProtobuf.loadAs(Sub8A.serializer()).msgInfo.asSequence()
|
return@lambda528 vProtobuf.loadAs(Sub8A.serializer()).msgInfo.asSequence()
|
||||||
.filter { it.botUin == bot.id }.mapNotNull { info ->
|
.filter { it.botUin == bot.id }.mapNotNull { info ->
|
||||||
MessageRecallEvent.FriendRecall(
|
MessageRecallEvent.FriendRecall(
|
||||||
|
@ -137,7 +137,7 @@ internal class StatSvc {
|
|||||||
fun online(
|
fun online(
|
||||||
client: QQAndroidClient,
|
client: QQAndroidClient,
|
||||||
regPushReason: RegPushReason = RegPushReason.appRegister
|
regPushReason: RegPushReason = RegPushReason.appRegister
|
||||||
) = impl("online", client, 1 or 2 or 4, client.onlineStatus, regPushReason) {
|
) = impl("online", client, 1L or 2 or 4, client.onlineStatus, regPushReason) {
|
||||||
client.bot.components[ContactCacheService].friendListCache?.let { friendListCache: FriendListCache ->
|
client.bot.components[ContactCacheService].friendListCache?.let { friendListCache: FriendListCache ->
|
||||||
iLargeSeq = friendListCache.friendListSeq
|
iLargeSeq = friendListCache.friendListSeq
|
||||||
// timeStamp = friendListCache.timeStamp
|
// timeStamp = friendListCache.timeStamp
|
||||||
|
@ -126,25 +126,25 @@ internal class MessageSerializationTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
fun `test FileMessage serialization`() {
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class W(
|
data class W(
|
||||||
val m: FileMessage
|
val m: FileMessage
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `test FileMessage serialization`() {
|
||||||
val w = W(FileMessageImpl("id", 2, "name", 1))
|
val w = W(FileMessageImpl("id", 2, "name", 1))
|
||||||
println(w.serialize(W.serializer()))
|
println(w.serialize(W.serializer()))
|
||||||
assertEquals(w, w.serialize(W.serializer()).deserialize(W.serializer()))
|
assertEquals(w, w.serialize(W.serializer()).deserialize(W.serializer()))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
fun `test polymorphic serialization`() {
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class RichWrapper(
|
data class RichWrapper(
|
||||||
val richMessage: RichMessage
|
val richMessage: RichMessage
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `test polymorphic serialization`() {
|
||||||
val string = format.encodeToString(RichWrapper.serializer(), RichWrapper(SimpleServiceMessage(1, "content")))
|
val string = format.encodeToString(RichWrapper.serializer(), RichWrapper(SimpleServiceMessage(1, "content")))
|
||||||
println(string)
|
println(string)
|
||||||
var element = format.parseToJsonElement(string)
|
var element = format.parseToJsonElement(string)
|
||||||
@ -155,13 +155,13 @@ internal class MessageSerializationTest {
|
|||||||
assertEquals(1, element["serviceId"]?.cast<JsonPrimitive>()?.content?.toInt())
|
assertEquals(1, element["serviceId"]?.cast<JsonPrimitive>()?.content?.toInt())
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
fun `test ShowImageFlag serialization`() {
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class Wrapper(
|
data class Wrapper(
|
||||||
val message: @Polymorphic SingleMessage
|
val message: @Polymorphic SingleMessage
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `test ShowImageFlag serialization`() {
|
||||||
val string = format.encodeToString(Wrapper.serializer(), Wrapper(ShowImageFlag))
|
val string = format.encodeToString(Wrapper.serializer(), Wrapper(ShowImageFlag))
|
||||||
println(string)
|
println(string)
|
||||||
var element = format.parseToJsonElement(string)
|
var element = format.parseToJsonElement(string)
|
||||||
|
Loading…
Reference in New Issue
Block a user