mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-28 16:50:09 +08:00
Revert "Use io.ktor.utils.io
than kotlinx.io
"
This reverts commit 6a85769e
This commit is contained in:
parent
92504fc313
commit
b3c4f24e33
@ -9,9 +9,9 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.qqandroid
|
package net.mamoe.mirai.qqandroid
|
||||||
|
|
||||||
import io.ktor.utils.io.core.Closeable
|
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withTimeoutOrNull
|
import kotlinx.coroutines.withTimeoutOrNull
|
||||||
|
import kotlinx.io.core.Closeable
|
||||||
import net.mamoe.mirai.LowLevelAPI
|
import net.mamoe.mirai.LowLevelAPI
|
||||||
import net.mamoe.mirai.contact.*
|
import net.mamoe.mirai.contact.*
|
||||||
import net.mamoe.mirai.data.*
|
import net.mamoe.mirai.data.*
|
||||||
|
@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.qqandroid.io.serialization
|
package net.mamoe.mirai.qqandroid.io.serialization
|
||||||
|
|
||||||
import io.ktor.utils.io.charsets.Charset
|
import kotlinx.io.charsets.Charset
|
||||||
import io.ktor.utils.io.core.*
|
import kotlinx.io.core.*
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
import kotlinx.serialization.internal.*
|
import kotlinx.serialization.internal.*
|
||||||
import kotlinx.serialization.modules.EmptyModule
|
import kotlinx.serialization.modules.EmptyModule
|
||||||
|
@ -12,10 +12,7 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.qqandroid.io.serialization
|
package net.mamoe.mirai.qqandroid.io.serialization
|
||||||
|
|
||||||
import io.ktor.utils.io.core.BytePacketBuilder
|
import kotlinx.io.core.*
|
||||||
import io.ktor.utils.io.core.ByteReadPacket
|
|
||||||
import io.ktor.utils.io.core.readBytes
|
|
||||||
import io.ktor.utils.io.core.writeFully
|
|
||||||
import kotlinx.serialization.DeserializationStrategy
|
import kotlinx.serialization.DeserializationStrategy
|
||||||
import kotlinx.serialization.SerialDescriptor
|
import kotlinx.serialization.SerialDescriptor
|
||||||
import kotlinx.serialization.SerializationStrategy
|
import kotlinx.serialization.SerializationStrategy
|
||||||
|
@ -9,7 +9,10 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.qqandroid.message
|
package net.mamoe.mirai.qqandroid.message
|
||||||
|
|
||||||
import io.ktor.utils.io.core.*
|
import kotlinx.io.core.buildPacket
|
||||||
|
import kotlinx.io.core.discardExact
|
||||||
|
import kotlinx.io.core.readBytes
|
||||||
|
import kotlinx.io.core.readUInt
|
||||||
import net.mamoe.mirai.LowLevelAPI
|
import net.mamoe.mirai.LowLevelAPI
|
||||||
import net.mamoe.mirai.contact.Member
|
import net.mamoe.mirai.contact.Member
|
||||||
import net.mamoe.mirai.message.data.*
|
import net.mamoe.mirai.message.data.*
|
||||||
|
@ -11,9 +11,9 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.qqandroid.network
|
package net.mamoe.mirai.qqandroid.network
|
||||||
|
|
||||||
import io.ktor.utils.io.core.*
|
|
||||||
import kotlinx.atomicfu.AtomicInt
|
import kotlinx.atomicfu.AtomicInt
|
||||||
import kotlinx.atomicfu.atomic
|
import kotlinx.atomicfu.atomic
|
||||||
|
import kotlinx.io.core.*
|
||||||
import net.mamoe.mirai.BotAccount
|
import net.mamoe.mirai.BotAccount
|
||||||
import net.mamoe.mirai.RawAccountIdUse
|
import net.mamoe.mirai.RawAccountIdUse
|
||||||
import net.mamoe.mirai.data.OnlineStatus
|
import net.mamoe.mirai.data.OnlineStatus
|
||||||
@ -315,7 +315,7 @@ internal class Pt4Token(data: ByteArray, creationTime: Long, expireTime: Long) :
|
|||||||
internal typealias PSKeyMap = MutableMap<String, PSKey>
|
internal typealias PSKeyMap = MutableMap<String, PSKey>
|
||||||
internal typealias Pt4TokenMap = MutableMap<String, Pt4Token>
|
internal typealias Pt4TokenMap = MutableMap<String, Pt4Token>
|
||||||
|
|
||||||
internal inline fun Input.readUShortLVString(): String = io.ktor.utils.io.core.String(this.readUShortLVByteArray())
|
internal inline fun Input.readUShortLVString(): String = kotlinx.io.core.String(this.readUShortLVByteArray())
|
||||||
|
|
||||||
internal inline fun Input.readUShortLVByteArray(): ByteArray = this.readBytes(this.readUShort().toInt())
|
internal inline fun Input.readUShortLVByteArray(): ByteArray = this.readBytes(this.readUShort().toInt())
|
||||||
|
|
||||||
|
@ -18,14 +18,14 @@ import io.ktor.http.content.OutgoingContent
|
|||||||
import io.ktor.http.userAgent
|
import io.ktor.http.userAgent
|
||||||
import io.ktor.utils.io.ByteReadChannel
|
import io.ktor.utils.io.ByteReadChannel
|
||||||
import io.ktor.utils.io.copyAndClose
|
import io.ktor.utils.io.copyAndClose
|
||||||
import io.ktor.utils.io.core.Input
|
|
||||||
import io.ktor.utils.io.core.readAvailable
|
|
||||||
import io.ktor.utils.io.core.readInt
|
|
||||||
import io.ktor.utils.io.core.use
|
|
||||||
import io.ktor.utils.io.pool.useInstance
|
|
||||||
import kotlinx.coroutines.InternalCoroutinesApi
|
import kotlinx.coroutines.InternalCoroutinesApi
|
||||||
import kotlinx.coroutines.flow.collect
|
import kotlinx.coroutines.flow.collect
|
||||||
import kotlinx.io.InputStream
|
import kotlinx.io.InputStream
|
||||||
|
import kotlinx.io.core.Input
|
||||||
|
import kotlinx.io.core.discardExact
|
||||||
|
import kotlinx.io.core.readAvailable
|
||||||
|
import kotlinx.io.core.use
|
||||||
|
import kotlinx.io.pool.useInstance
|
||||||
import net.mamoe.mirai.qqandroid.io.serialization.readProtoBuf
|
import net.mamoe.mirai.qqandroid.io.serialization.readProtoBuf
|
||||||
import net.mamoe.mirai.qqandroid.network.QQAndroidClient
|
import net.mamoe.mirai.qqandroid.network.QQAndroidClient
|
||||||
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.CSDataHighwayHead
|
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.CSDataHighwayHead
|
||||||
|
@ -12,10 +12,13 @@
|
|||||||
package net.mamoe.mirai.qqandroid.network.highway
|
package net.mamoe.mirai.qqandroid.network.highway
|
||||||
|
|
||||||
import io.ktor.utils.io.ByteReadChannel
|
import io.ktor.utils.io.ByteReadChannel
|
||||||
import io.ktor.utils.io.core.*
|
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.map
|
import kotlinx.coroutines.flow.map
|
||||||
import kotlinx.io.InputStream
|
import kotlinx.io.InputStream
|
||||||
|
import kotlinx.io.core.ByteReadPacket
|
||||||
|
import kotlinx.io.core.Input
|
||||||
|
import kotlinx.io.core.buildPacket
|
||||||
|
import kotlinx.io.core.writeFully
|
||||||
import net.mamoe.mirai.qqandroid.io.serialization.toByteArray
|
import net.mamoe.mirai.qqandroid.io.serialization.toByteArray
|
||||||
import net.mamoe.mirai.qqandroid.network.QQAndroidClient
|
import net.mamoe.mirai.qqandroid.network.QQAndroidClient
|
||||||
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.CSDataHighwayHead
|
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.CSDataHighwayHead
|
||||||
|
@ -1,408 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2020 Mamoe Technologies and contributors.
|
|
||||||
*
|
|
||||||
* 此源代码的使用受 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.
|
|
||||||
*
|
|
||||||
* https://github.com/mamoe/mirai/blob/master/LICENSE
|
|
||||||
*/
|
|
||||||
|
|
||||||
@file:Suppress("SpellCheckingInspection")
|
|
||||||
|
|
||||||
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
|
|
||||||
|
|
||||||
import kotlinx.serialization.SerialId
|
|
||||||
import kotlinx.serialization.Serializable
|
|
||||||
import kotlinx.serialization.protobuf.ProtoNumberType
|
|
||||||
import kotlinx.serialization.protobuf.ProtoType
|
|
||||||
import net.mamoe.mirai.qqandroid.io.ProtoBuf
|
|
||||||
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
|
|
||||||
|
|
||||||
class GroupOpenSysMsg : ProtoBuf {
|
|
||||||
@Serializable
|
|
||||||
class LightApp(
|
|
||||||
@SerialId(1) val app: String = "",
|
|
||||||
@SerialId(2) val view: String = "",
|
|
||||||
@SerialId(3) val desc: String = "",
|
|
||||||
@SerialId(4) val prompt: String = "",
|
|
||||||
@SerialId(5) val ver: String = "",
|
|
||||||
@SerialId(6) val meta: String = "",
|
|
||||||
@SerialId(7) val config: String = "",
|
|
||||||
@SerialId(8) val source: Source? = null
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class RichMsg(
|
|
||||||
@SerialId(1) val title: String = "",
|
|
||||||
@SerialId(2) val desc: String = "",
|
|
||||||
@SerialId(3) val brief: String = "",
|
|
||||||
@SerialId(4) val cover: String = "",
|
|
||||||
@SerialId(5) val url: String = "",
|
|
||||||
@SerialId(6) val source: Source? = null
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class Sender(
|
|
||||||
@SerialId(1) val uin: Long = 0L,
|
|
||||||
@SerialId(2) val nick: String = "",
|
|
||||||
@SerialId(3) val avatar: String = "",
|
|
||||||
@SerialId(4) val url: String = ""
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class Source(
|
|
||||||
@SerialId(1) val name: String = "",
|
|
||||||
@SerialId(2) val icon: String = "",
|
|
||||||
@SerialId(3) val url: String = ""
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class SysMsgBody(
|
|
||||||
@SerialId(1) val groupId: Long = 0L,
|
|
||||||
@SerialId(2) val appid: Long = 0L,
|
|
||||||
@SerialId(3) val sender: Sender? = null,
|
|
||||||
@SerialId(4) val msgType: Int = 0,
|
|
||||||
@SerialId(5) val content: String = "",
|
|
||||||
@SerialId(6) val richMsg: RichMsg? = null,
|
|
||||||
@SerialId(7) val lightApp: LightApp? = null
|
|
||||||
) : ProtoBuf
|
|
||||||
}
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class TroopTips0x857 : ProtoBuf {
|
|
||||||
@Serializable
|
|
||||||
class AIOGrayTipsInfo(
|
|
||||||
@SerialId(1) val optUint32ShowLastest: Int = 0,
|
|
||||||
@SerialId(2) val optBytesContent: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(3) val optUint32Remind: Int = 0,
|
|
||||||
@SerialId(4) val optBytesBrief: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(5) val receiverUin: Long = 0L,
|
|
||||||
@SerialId(6) val reliaoAdminOpt: Int = 0,
|
|
||||||
@SerialId(7) val robotGroupOpt: Int = 0
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class AIOTopTipsInfo(
|
|
||||||
@SerialId(1) val optBytesContent: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(2) val optUint32Icon: Int = 0,
|
|
||||||
@SerialId(3) val optEnumAction: Int /* enum */ = 1,
|
|
||||||
@SerialId(4) val optBytesUrl: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(5) val optBytesData: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(6) val optBytesDataI: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(7) val optBytesDataA: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(8) val optBytesDataP: ByteArray = EMPTY_BYTE_ARRAY
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class FloatedTipsInfo(
|
|
||||||
@SerialId(1) val optBytesContent: ByteArray = EMPTY_BYTE_ARRAY
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class GeneralGrayTipInfo(
|
|
||||||
@SerialId(1) val busiType: Long = 0L,
|
|
||||||
@SerialId(2) val busiId: Long = 0L,
|
|
||||||
@SerialId(3) val ctrlFlag: Int = 0,
|
|
||||||
@SerialId(4) val c2cType: Int = 0,
|
|
||||||
@SerialId(5) val serviceType: Int = 0,
|
|
||||||
@SerialId(6) val templId: Long = 0L,
|
|
||||||
@SerialId(7) val msgTemplParam: List<TemplParam>? = null,
|
|
||||||
@SerialId(8) val content: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(10) val tipsSeqId: Long = 0L,
|
|
||||||
@SerialId(100) val pbReserv: ByteArray = EMPTY_BYTE_ARRAY
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class GoldMsgTipsElem(
|
|
||||||
@SerialId(1) val type: Int = 0,
|
|
||||||
@SerialId(2) val billno: String = "",
|
|
||||||
@SerialId(3) val result: Int = 0,
|
|
||||||
@SerialId(4) val amount: Int = 0,
|
|
||||||
@SerialId(5) val total: Int = 0,
|
|
||||||
@SerialId(6) val interval: Int = 0,
|
|
||||||
@SerialId(7) val finish: Int = 0,
|
|
||||||
@SerialId(8) val uin: List<Long>? = null,
|
|
||||||
@SerialId(9) val action: Int = 0
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class GroupInfoChange(
|
|
||||||
@SerialId(1) val groupHonorSwitch: Int = 0
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class GroupNotifyInfo(
|
|
||||||
@SerialId(1) val optUint32AutoPullFlag: Int = 0,
|
|
||||||
@SerialId(2) val optBytesFeedsId: ByteArray = EMPTY_BYTE_ARRAY
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class InstCtrl(
|
|
||||||
@SerialId(1) val msgSendToInst: List<InstInfo>? = null,
|
|
||||||
@SerialId(2) val msgExcludeInst: List<InstInfo>? = null,
|
|
||||||
@SerialId(3) val msgFromInst: InstInfo? = null
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class InstInfo(
|
|
||||||
@SerialId(1) val apppid: Int = 0,
|
|
||||||
@SerialId(2) val instid: Int = 0,
|
|
||||||
@SerialId(3) val platform: Int = 0,
|
|
||||||
@SerialId(4) val openAppid: Int = 0,
|
|
||||||
@SerialId(5) val productid: Int = 0,
|
|
||||||
@SerialId(6) val ssoBid: Int = 0,
|
|
||||||
@SerialId(7) val guid: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(8) val verMin: Int = 0,
|
|
||||||
@SerialId(9) val verMax: Int = 0
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class LbsShareChangePushInfo(
|
|
||||||
@SerialId(1) val msgType: Int = 0,
|
|
||||||
@SerialId(2) val msgInfo: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(3) val versionCtrl: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(4) val groupId: Long = 0L,
|
|
||||||
@SerialId(5) val operUin: Long = 0L,
|
|
||||||
@SerialId(6) val grayTips: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(7) val msgSeq: Long = 0L,
|
|
||||||
@SerialId(8) val joinNums: Int = 0,
|
|
||||||
@SerialId(99) val pushType: Int = 0,
|
|
||||||
@SerialId(100) val extInfo: ByteArray = EMPTY_BYTE_ARRAY
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class LuckyBagNotify(
|
|
||||||
@SerialId(1) val msgTips: ByteArray = EMPTY_BYTE_ARRAY
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class MediaChangePushInfo(
|
|
||||||
@SerialId(1) val msgType: Int = 0,
|
|
||||||
@SerialId(2) val msgInfo: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(3) val versionCtrl: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(4) val groupId: Long = 0L,
|
|
||||||
@SerialId(5) val operUin: Long = 0L,
|
|
||||||
@SerialId(6) val grayTips: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(7) val msgSeq: Long = 0L,
|
|
||||||
@SerialId(8) val joinNums: Int = 0,
|
|
||||||
@SerialId(9) val msgPerSetting: PersonalSetting? = null,
|
|
||||||
@SerialId(10) val playMode: Int = 0,
|
|
||||||
@SerialId(99) val mediaType: Int = 0,
|
|
||||||
@SerialId(100) val extInfo: ByteArray = EMPTY_BYTE_ARRAY
|
|
||||||
) : ProtoBuf {
|
|
||||||
@Serializable
|
|
||||||
class PersonalSetting(
|
|
||||||
@SerialId(1) val themeId: Int = 0,
|
|
||||||
@SerialId(2) val playerId: Int = 0,
|
|
||||||
@SerialId(3) val fontId: Int = 0
|
|
||||||
) : ProtoBuf
|
|
||||||
}
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class MessageBoxInfo(
|
|
||||||
@SerialId(1) val optBytesContent: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(2) val optBytesTitle: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(3) val optBytesButton: ByteArray = EMPTY_BYTE_ARRAY
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class MessageRecallReminder(
|
|
||||||
@SerialId(1) val uin: Long = 0L,
|
|
||||||
@SerialId(2) val nickname: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(3) val recalledMsgList: List<MessageMeta> = listOf(),
|
|
||||||
@SerialId(4) val reminderContent: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(5) val userdef: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(6) val groupType: Int = 0,
|
|
||||||
@SerialId(7) val opType: Int = 0
|
|
||||||
) : ProtoBuf {
|
|
||||||
@Serializable
|
|
||||||
class MessageMeta(
|
|
||||||
@SerialId(1) val seq: Int = 0,
|
|
||||||
@SerialId(2) val time: Int = 0,
|
|
||||||
@SerialId(3) val msgRandom: Int = 0,
|
|
||||||
@SerialId(4) val msgType: Int = 0,
|
|
||||||
@SerialId(5) val msgFlag: Int = 0,
|
|
||||||
@SerialId(6) val authorUin: Long = 0L
|
|
||||||
) : ProtoBuf
|
|
||||||
}
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class MiniAppNotify(
|
|
||||||
@SerialId(1) val msg: ByteArray = EMPTY_BYTE_ARRAY
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class NotifyMsgBody(
|
|
||||||
@SerialId(1) val optEnumType: Int /* enum */ = 1,
|
|
||||||
@SerialId(2) val optUint64MsgTime: Long = 0L,
|
|
||||||
@SerialId(3) val optUint64MsgExpires: Long = 0L,
|
|
||||||
@SerialId(4) val optUint64GroupCode: Long = 0L,
|
|
||||||
@SerialId(5) val optMsgGraytips: AIOGrayTipsInfo? = null,
|
|
||||||
@SerialId(6) val optMsgMessagebox: MessageBoxInfo? = null,
|
|
||||||
@SerialId(7) val optMsgFloatedtips: FloatedTipsInfo? = null,
|
|
||||||
@SerialId(8) val optMsgToptips: AIOTopTipsInfo? = null,
|
|
||||||
@SerialId(9) val optMsgRedtips: RedGrayTipsInfo? = null,
|
|
||||||
@SerialId(10) val optMsgGroupNotify: GroupNotifyInfo? = null,
|
|
||||||
@SerialId(11) val optMsgRecall: MessageRecallReminder? = null,
|
|
||||||
@SerialId(12) val optMsgThemeNotify: ThemeStateNotify? = null,
|
|
||||||
@SerialId(13) val serviceType: Int = 0,
|
|
||||||
@SerialId(14) val optMsgObjmsgUpdate: NotifyObjmsgUpdate? = null,
|
|
||||||
@SerialId(15) val optMsgWerewolfPush: WereWolfPush? = null,
|
|
||||||
// @SerialId(16) val optStcmGameState: ApolloGameStatus.STCMGameMessage? = null,
|
|
||||||
// @SerialId(17) val aplloMsgPush: ApolloPushMsgInfo.STPushMsgElem? = null,
|
|
||||||
@SerialId(18) val optMsgGoldtips: GoldMsgTipsElem? = null,
|
|
||||||
@SerialId(20) val optMsgMiniappNotify: MiniAppNotify? = null,
|
|
||||||
@SerialId(21) val optUint64SenderUin: Long = 0L,
|
|
||||||
@SerialId(22) val optMsgLuckybagNotify: LuckyBagNotify? = null,
|
|
||||||
@SerialId(23) val optMsgTroopformtipsPush: TroopFormGrayTipsInfo? = null,
|
|
||||||
@SerialId(24) val optMsgMediaPush: MediaChangePushInfo? = null,
|
|
||||||
@SerialId(26) val optGeneralGrayTip: GeneralGrayTipInfo? = null,
|
|
||||||
@SerialId(27) val optMsgVideoPush: VideoChangePushInfo? = null,
|
|
||||||
@SerialId(28) val optLbsShareChangePlusInfo: LbsShareChangePushInfo? = null,
|
|
||||||
@SerialId(29) val optMsgSingPush: SingChangePushInfo? = null,
|
|
||||||
@SerialId(30) val optMsgGroupInfoChange: GroupInfoChange? = null
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class NotifyObjmsgUpdate(
|
|
||||||
@SerialId(1) val objmsgId: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(2) val updateType: Int = 0,
|
|
||||||
@SerialId(3) val extMsg: ByteArray = EMPTY_BYTE_ARRAY
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class RedGrayTipsInfo(
|
|
||||||
@SerialId(1) val optUint32ShowLastest: Int = 0,
|
|
||||||
@SerialId(2) val senderUin: Long = 0L,
|
|
||||||
@SerialId(3) val receiverUin: Long = 0L,
|
|
||||||
@SerialId(4) val senderRichContent: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(5) val receiverRichContent: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(6) val authkey: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@ProtoType(ProtoNumberType.SIGNED) @SerialId(7) val sint32Msgtype: Int = 0,
|
|
||||||
@SerialId(8) val luckyFlag: Int = 0,
|
|
||||||
@SerialId(9) val hideFlag: Int = 0,
|
|
||||||
@SerialId(10) val pcBody: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(11) val icon: Int = 0,
|
|
||||||
@SerialId(12) val luckyUin: Long = 0L,
|
|
||||||
@SerialId(13) val time: Int = 0,
|
|
||||||
@SerialId(14) val random: Int = 0,
|
|
||||||
@SerialId(15) val broadcastRichContent: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(16) val idiom: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(17) val idiomSeq: Int = 0,
|
|
||||||
@SerialId(18) val idiomAlpha: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(19) val jumpurl: ByteArray = EMPTY_BYTE_ARRAY
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class ReqBody(
|
|
||||||
@SerialId(1) val optUint64GroupCode: Long = 0L,
|
|
||||||
@SerialId(2) val uint64Memberuins: List<Long>? = null,
|
|
||||||
@SerialId(3) val optUint32Offline: Int = 0,
|
|
||||||
@SerialId(4) val msgInstCtrl: InstCtrl? = null,
|
|
||||||
@SerialId(5) val optBytesMsg: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(6) val optUint32BusiType: Int = 0
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class RspBody(
|
|
||||||
@SerialId(1) val optUint64GroupCode: Long = 0L
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class SingChangePushInfo(
|
|
||||||
@SerialId(1) val seq: Long = 0L,
|
|
||||||
@SerialId(2) val actionType: Int = 0,
|
|
||||||
@SerialId(3) val groupId: Long = 0L,
|
|
||||||
@SerialId(4) val operUin: Long = 0L,
|
|
||||||
@SerialId(5) val grayTips: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(6) val joinNums: Int = 0
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class TemplParam(
|
|
||||||
@SerialId(1) val name: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(2) val value: ByteArray = EMPTY_BYTE_ARRAY
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class ThemeStateNotify(
|
|
||||||
@SerialId(1) val state: Int = 0,
|
|
||||||
@SerialId(2) val feedsId: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(3) val themeName: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(4) val actionUin: Long = 0L,
|
|
||||||
@SerialId(5) val createUin: Long = 0L
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class TroopFormGrayTipsInfo(
|
|
||||||
@SerialId(1) val writerUin: Long = 0L,
|
|
||||||
@SerialId(2) val creatorUin: Long = 0L,
|
|
||||||
@SerialId(3) val richContent: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(4) val optBytesUrl: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(5) val creatorNick: ByteArray = EMPTY_BYTE_ARRAY
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class VideoChangePushInfo(
|
|
||||||
@SerialId(1) val seq: Long = 0L,
|
|
||||||
@SerialId(2) val actionType: Int = 0,
|
|
||||||
@SerialId(3) val groupId: Long = 0L,
|
|
||||||
@SerialId(4) val operUin: Long = 0L,
|
|
||||||
@SerialId(5) val grayTips: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(6) val joinNums: Int = 0,
|
|
||||||
@SerialId(100) val extInfo: ByteArray = EMPTY_BYTE_ARRAY
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class WereWolfPush(
|
|
||||||
@SerialId(1) val pushType: Int = 0,
|
|
||||||
@SerialId(2) val gameRoom: Long = 0L,
|
|
||||||
@SerialId(3) val enumGameState: Int = 0,
|
|
||||||
@SerialId(4) val gameRound: Int = 0,
|
|
||||||
@SerialId(5) val roles: List<Role>? = null,
|
|
||||||
@SerialId(6) val speaker: Long = 0L,
|
|
||||||
@SerialId(7) val judgeUin: Long = 0L,
|
|
||||||
@SerialId(8) val judgeWords: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(9) val enumOperation: Int = 0,
|
|
||||||
@SerialId(10) val srcUser: Long = 0L,
|
|
||||||
@SerialId(11) val dstUser: Long = 0L,
|
|
||||||
@SerialId(12) val deadUsers: List<Long>? = null,
|
|
||||||
@SerialId(13) val gameResult: Int = 0,
|
|
||||||
@SerialId(14) val timeoutSec: Int = 0,
|
|
||||||
@SerialId(15) val killConfirmed: Int = 0,
|
|
||||||
@SerialId(16) val judgeNickname: ByteArray = EMPTY_BYTE_ARRAY,
|
|
||||||
@SerialId(17) val votedTieUsers: List<Long>? = null
|
|
||||||
) : ProtoBuf {
|
|
||||||
@Serializable
|
|
||||||
class GameRecord(
|
|
||||||
@SerialId(1) val total: Int = 0,
|
|
||||||
@SerialId(2) val win: Int = 0,
|
|
||||||
@SerialId(3) val lose: Int = 0,
|
|
||||||
@SerialId(4) val draw: Int = 0
|
|
||||||
) : ProtoBuf
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class Role(
|
|
||||||
@SerialId(1) val uin: Long = 0L,
|
|
||||||
@SerialId(2) val enumType: Int = 0,
|
|
||||||
@SerialId(3) val enumState: Int = 0,
|
|
||||||
@SerialId(4) val canSpeak: Int = 0,
|
|
||||||
@SerialId(5) val canListen: Int = 0,
|
|
||||||
@SerialId(6) val position: Int = 0,
|
|
||||||
@SerialId(7) val canVote: Int = 0,
|
|
||||||
@SerialId(8) val canVoted: Int = 0,
|
|
||||||
@SerialId(9) val alreadyChecked: Int = 0,
|
|
||||||
@SerialId(10) val alreadySaved: Int = 0,
|
|
||||||
@SerialId(11) val alreadyPoisoned: Int = 0,
|
|
||||||
@SerialId(12) val playerState: Int = 0,
|
|
||||||
@SerialId(13) val enumDeadOp: Int = 0,
|
|
||||||
@SerialId(14) val enumOperation: Int = 0,
|
|
||||||
@SerialId(15) val dstUser: Long = 0L,
|
|
||||||
@SerialId(16) val operationRound: Int = 0,
|
|
||||||
@SerialId(17) val msgGameRecord: GameRecord? = null,
|
|
||||||
@SerialId(18) val isWerewolf: Int = 0,
|
|
||||||
@SerialId(19) val defendedUser: Long = 0L,
|
|
||||||
@SerialId(20) val isSheriff: Int = 0
|
|
||||||
) : ProtoBuf
|
|
||||||
}
|
|
||||||
}
|
|
@ -9,7 +9,10 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.qqandroid.network.protocol.packet
|
package net.mamoe.mirai.qqandroid.network.protocol.packet
|
||||||
|
|
||||||
import io.ktor.utils.io.core.*
|
import kotlinx.io.core.BytePacketBuilder
|
||||||
|
import kotlinx.io.core.ByteReadPacket
|
||||||
|
import kotlinx.io.core.buildPacket
|
||||||
|
import kotlinx.io.core.writeFully
|
||||||
import net.mamoe.mirai.qqandroid.network.QQAndroidClient
|
import net.mamoe.mirai.qqandroid.network.QQAndroidClient
|
||||||
import net.mamoe.mirai.utils.cryptor.ECDH
|
import net.mamoe.mirai.utils.cryptor.ECDH
|
||||||
import net.mamoe.mirai.utils.cryptor.ECDHKeyPair
|
import net.mamoe.mirai.utils.cryptor.ECDHKeyPair
|
||||||
|
@ -10,7 +10,10 @@
|
|||||||
package net.mamoe.mirai.qqandroid.network.protocol.packet
|
package net.mamoe.mirai.qqandroid.network.protocol.packet
|
||||||
|
|
||||||
|
|
||||||
import io.ktor.utils.io.core.*
|
import kotlinx.io.core.BytePacketBuilder
|
||||||
|
import kotlinx.io.core.ByteReadPacket
|
||||||
|
import kotlinx.io.core.buildPacket
|
||||||
|
import kotlinx.io.core.writeFully
|
||||||
import net.mamoe.mirai.qqandroid.network.QQAndroidClient
|
import net.mamoe.mirai.qqandroid.network.QQAndroidClient
|
||||||
import net.mamoe.mirai.utils.MiraiInternalAPI
|
import net.mamoe.mirai.utils.MiraiInternalAPI
|
||||||
import net.mamoe.mirai.utils.io.encryptAndWrite
|
import net.mamoe.mirai.utils.io.encryptAndWrite
|
||||||
@ -43,7 +46,6 @@ internal inline fun OutgoingPacketFactory<*>.buildOutgoingUniPacket(
|
|||||||
body: BytePacketBuilder.(sequenceId: Int) -> Unit
|
body: BytePacketBuilder.(sequenceId: Int) -> Unit
|
||||||
): OutgoingPacket {
|
): OutgoingPacket {
|
||||||
|
|
||||||
@Suppress("DuplicatedCode")
|
|
||||||
return OutgoingPacket(name, commandName, sequenceId, buildPacket {
|
return OutgoingPacket(name, commandName, sequenceId, buildPacket {
|
||||||
writeIntLVPacket(lengthOffset = { it + 4 }) {
|
writeIntLVPacket(lengthOffset = { it + 4 }) {
|
||||||
writeInt(0x0B)
|
writeInt(0x0B)
|
||||||
@ -52,7 +54,7 @@ internal inline fun OutgoingPacketFactory<*>.buildOutgoingUniPacket(
|
|||||||
writeByte(0)
|
writeByte(0)
|
||||||
client.uin.toString().let {
|
client.uin.toString().let {
|
||||||
writeInt(it.length + 4)
|
writeInt(it.length + 4)
|
||||||
writeText(it)
|
writeStringUtf8(it)
|
||||||
}
|
}
|
||||||
encryptAndWrite(key) {
|
encryptAndWrite(key) {
|
||||||
writeUniPacket(commandName, client.outgoingPacketSessionId, extraData) {
|
writeUniPacket(commandName, client.outgoingPacketSessionId, extraData) {
|
||||||
@ -75,7 +77,6 @@ internal inline fun IncomingPacketFactory<*>.buildResponseUniPacket(
|
|||||||
sequenceId: Int = client.nextSsoSequenceId(),
|
sequenceId: Int = client.nextSsoSequenceId(),
|
||||||
body: BytePacketBuilder.(sequenceId: Int) -> Unit
|
body: BytePacketBuilder.(sequenceId: Int) -> Unit
|
||||||
): OutgoingPacket {
|
): OutgoingPacket {
|
||||||
@Suppress("DuplicatedCode")
|
|
||||||
return OutgoingPacket(name, commandName, sequenceId, buildPacket {
|
return OutgoingPacket(name, commandName, sequenceId, buildPacket {
|
||||||
writeIntLVPacket(lengthOffset = { it + 4 }) {
|
writeIntLVPacket(lengthOffset = { it + 4 }) {
|
||||||
writeInt(0x0B)
|
writeInt(0x0B)
|
||||||
@ -84,7 +85,7 @@ internal inline fun IncomingPacketFactory<*>.buildResponseUniPacket(
|
|||||||
writeByte(0)
|
writeByte(0)
|
||||||
client.uin.toString().let {
|
client.uin.toString().let {
|
||||||
writeInt(it.length + 4)
|
writeInt(it.length + 4)
|
||||||
writeText(it)
|
writeStringUtf8(it)
|
||||||
}
|
}
|
||||||
encryptAndWrite(key) {
|
encryptAndWrite(key) {
|
||||||
writeUniPacket(commandName, client.outgoingPacketSessionId, extraData) {
|
writeUniPacket(commandName, client.outgoingPacketSessionId, extraData) {
|
||||||
@ -105,7 +106,7 @@ internal inline fun BytePacketBuilder.writeUniPacket(
|
|||||||
writeIntLVPacket(lengthOffset = { it + 4 }) {
|
writeIntLVPacket(lengthOffset = { it + 4 }) {
|
||||||
commandName.let {
|
commandName.let {
|
||||||
writeInt(it.length + 4)
|
writeInt(it.length + 4)
|
||||||
writeText(it)
|
writeStringUtf8(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
writeInt(4 + 4)
|
writeInt(4 + 4)
|
||||||
@ -152,7 +153,7 @@ internal inline fun OutgoingPacketFactory<*>.buildLoginOutgoingPacket(
|
|||||||
|
|
||||||
client.uin.toString().let {
|
client.uin.toString().let {
|
||||||
writeInt(it.length + 4)
|
writeInt(it.length + 4)
|
||||||
writeText(it)
|
writeStringUtf8(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (key === NO_ENCRYPT) {
|
if (key === NO_ENCRYPT) {
|
||||||
@ -207,7 +208,7 @@ internal inline fun BytePacketBuilder.writeSsoPacket(
|
|||||||
}
|
}
|
||||||
commandName.let {
|
commandName.let {
|
||||||
writeInt(it.length + 4)
|
writeInt(it.length + 4)
|
||||||
writeText(it)
|
writeStringUtf8(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
writeInt(4 + 4)
|
writeInt(4 + 4)
|
||||||
@ -215,7 +216,7 @@ internal inline fun BytePacketBuilder.writeSsoPacket(
|
|||||||
|
|
||||||
client.device.imei.let {
|
client.device.imei.let {
|
||||||
writeInt(it.length + 4)
|
writeInt(it.length + 4)
|
||||||
writeText(it)
|
writeStringUtf8(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
writeInt(4)
|
writeInt(4)
|
||||||
|
@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.qqandroid.network.protocol.packet
|
package net.mamoe.mirai.qqandroid.network.protocol.packet
|
||||||
|
|
||||||
import io.ktor.utils.io.core.*
|
import kotlinx.io.core.*
|
||||||
import io.ktor.utils.io.pool.useInstance
|
import kotlinx.io.pool.useInstance
|
||||||
import net.mamoe.mirai.data.Packet
|
import net.mamoe.mirai.data.Packet
|
||||||
import net.mamoe.mirai.event.Event
|
import net.mamoe.mirai.event.Event
|
||||||
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
||||||
|
@ -9,7 +9,10 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.qqandroid.network.protocol.packet
|
package net.mamoe.mirai.qqandroid.network.protocol.packet
|
||||||
|
|
||||||
import io.ktor.utils.io.core.*
|
import kotlinx.io.core.BytePacketBuilder
|
||||||
|
import kotlinx.io.core.ByteReadPacket
|
||||||
|
import kotlinx.io.core.toByteArray
|
||||||
|
import kotlinx.io.core.writeFully
|
||||||
import net.mamoe.mirai.qqandroid.network.protocol.LoginType
|
import net.mamoe.mirai.qqandroid.network.protocol.LoginType
|
||||||
import net.mamoe.mirai.qqandroid.utils.NetworkType
|
import net.mamoe.mirai.qqandroid.utils.NetworkType
|
||||||
import net.mamoe.mirai.utils.currentTimeMillis
|
import net.mamoe.mirai.utils.currentTimeMillis
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.qqandroid.network.protocol.packet.chat
|
package net.mamoe.mirai.qqandroid.network.protocol.packet.chat
|
||||||
|
|
||||||
import io.ktor.utils.io.core.ByteReadPacket
|
import kotlinx.io.core.ByteReadPacket
|
||||||
import net.mamoe.mirai.data.Packet
|
import net.mamoe.mirai.data.Packet
|
||||||
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
||||||
import net.mamoe.mirai.qqandroid.io.serialization.readProtoBuf
|
import net.mamoe.mirai.qqandroid.io.serialization.readProtoBuf
|
||||||
|
@ -9,7 +9,10 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.qqandroid.network.protocol.packet.chat
|
package net.mamoe.mirai.qqandroid.network.protocol.packet.chat
|
||||||
|
|
||||||
import io.ktor.utils.io.core.*
|
import kotlinx.io.core.ByteReadPacket
|
||||||
|
import kotlinx.io.core.buildPacket
|
||||||
|
import kotlinx.io.core.readBytes
|
||||||
|
import kotlinx.io.core.toByteArray
|
||||||
import net.mamoe.mirai.contact.Group
|
import net.mamoe.mirai.contact.Group
|
||||||
import net.mamoe.mirai.contact.Member
|
import net.mamoe.mirai.contact.Member
|
||||||
import net.mamoe.mirai.data.Packet
|
import net.mamoe.mirai.data.Packet
|
||||||
@ -375,7 +378,7 @@ internal class TroopManagement {
|
|||||||
OutgoingPacketFactory<EditGroupNametag.Response>("friendlist.ModifyGroupCardReq") {
|
OutgoingPacketFactory<EditGroupNametag.Response>("friendlist.ModifyGroupCardReq") {
|
||||||
object Response : Packet
|
object Response : Packet
|
||||||
|
|
||||||
override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): Response {
|
override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): EditGroupNametag.Response {
|
||||||
return Response
|
return Response
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.image
|
package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.image
|
||||||
|
|
||||||
import io.ktor.utils.io.core.ByteReadPacket
|
import kotlinx.io.core.ByteReadPacket
|
||||||
import net.mamoe.mirai.data.Packet
|
import net.mamoe.mirai.data.Packet
|
||||||
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
||||||
import net.mamoe.mirai.qqandroid.io.serialization.readProtoBuf
|
import net.mamoe.mirai.qqandroid.io.serialization.readProtoBuf
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.image
|
package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.image
|
||||||
|
|
||||||
import io.ktor.utils.io.core.ByteReadPacket
|
import kotlinx.io.core.ByteReadPacket
|
||||||
import net.mamoe.mirai.data.Packet
|
import net.mamoe.mirai.data.Packet
|
||||||
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
||||||
import net.mamoe.mirai.qqandroid.io.serialization.readProtoBuf
|
import net.mamoe.mirai.qqandroid.io.serialization.readProtoBuf
|
||||||
|
@ -9,9 +9,10 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive
|
package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive
|
||||||
|
|
||||||
import io.ktor.utils.io.core.ByteReadPacket
|
|
||||||
import kotlinx.coroutines.FlowPreview
|
import kotlinx.coroutines.FlowPreview
|
||||||
import kotlinx.coroutines.flow.*
|
import kotlinx.coroutines.flow.*
|
||||||
|
import kotlinx.io.core.ByteReadPacket
|
||||||
|
import kotlinx.io.core.discardExact
|
||||||
import net.mamoe.mirai.contact.Group
|
import net.mamoe.mirai.contact.Group
|
||||||
import net.mamoe.mirai.contact.MemberPermission
|
import net.mamoe.mirai.contact.MemberPermission
|
||||||
import net.mamoe.mirai.data.MemberInfo
|
import net.mamoe.mirai.data.MemberInfo
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.qqandroid.network.protocol.packet.list
|
package net.mamoe.mirai.qqandroid.network.protocol.packet.list
|
||||||
|
|
||||||
import io.ktor.utils.io.core.ByteReadPacket
|
import kotlinx.io.core.ByteReadPacket
|
||||||
import net.mamoe.mirai.data.Packet
|
import net.mamoe.mirai.data.Packet
|
||||||
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
||||||
import net.mamoe.mirai.qqandroid.io.serialization.decodeUniPacket
|
import net.mamoe.mirai.qqandroid.io.serialization.decodeUniPacket
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.qqandroid.network.protocol.packet.login
|
package net.mamoe.mirai.qqandroid.network.protocol.packet.login
|
||||||
|
|
||||||
import io.ktor.utils.io.core.ByteReadPacket
|
import kotlinx.io.core.ByteReadPacket
|
||||||
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
||||||
import net.mamoe.mirai.qqandroid.io.serialization.JceCharset
|
import net.mamoe.mirai.qqandroid.io.serialization.JceCharset
|
||||||
import net.mamoe.mirai.qqandroid.io.serialization.decodeUniPacket
|
import net.mamoe.mirai.qqandroid.io.serialization.decodeUniPacket
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.qqandroid.network.protocol.packet.login
|
package net.mamoe.mirai.qqandroid.network.protocol.packet.login
|
||||||
|
|
||||||
import io.ktor.utils.io.core.ByteReadPacket
|
import kotlinx.io.core.ByteReadPacket
|
||||||
import net.mamoe.mirai.data.Packet
|
import net.mamoe.mirai.data.Packet
|
||||||
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
||||||
import net.mamoe.mirai.qqandroid.io.serialization.*
|
import net.mamoe.mirai.qqandroid.io.serialization.*
|
||||||
|
@ -11,7 +11,7 @@ package net.mamoe.mirai.qqandroid.network.protocol.packet.login
|
|||||||
|
|
||||||
|
|
||||||
import io.ktor.util.InternalAPI
|
import io.ktor.util.InternalAPI
|
||||||
import io.ktor.utils.io.core.*
|
import kotlinx.io.core.*
|
||||||
import net.mamoe.mirai.data.Packet
|
import net.mamoe.mirai.data.Packet
|
||||||
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
||||||
import net.mamoe.mirai.qqandroid.network.*
|
import net.mamoe.mirai.qqandroid.network.*
|
||||||
@ -288,7 +288,7 @@ internal class WtLogin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class Picture(
|
class Picture(
|
||||||
val data: ByteArray,
|
val data: IoBuffer,
|
||||||
val sign: ByteArray
|
val sign: ByteArray
|
||||||
) : Captcha() {
|
) : Captcha() {
|
||||||
override fun toString(): String = "LoginPacketResponse.Captcha.Picture"
|
override fun toString(): String = "LoginPacketResponse.Captcha.Picture"
|
||||||
@ -394,8 +394,11 @@ internal class WtLogin {
|
|||||||
imageData.discardExact(2)//image Length
|
imageData.discardExact(2)//image Length
|
||||||
val sign = imageData.readBytes(signInfoLength.toInt())
|
val sign = imageData.readBytes(signInfoLength.toInt())
|
||||||
|
|
||||||
|
|
||||||
|
val buffer = IoBuffer.Pool.borrow()
|
||||||
|
imageData.readAvailable(buffer)
|
||||||
return LoginPacketResponse.Captcha.Picture(
|
return LoginPacketResponse.Captcha.Picture(
|
||||||
data = imageData.readBytes(),
|
data = buffer,
|
||||||
sign = sign
|
sign = sign
|
||||||
)
|
)
|
||||||
// } else error("UNKNOWN CAPTCHA QUESTION: ${question.toUHexString()}, tlvMap=" + tlvMap.contentToString())
|
// } else error("UNKNOWN CAPTCHA QUESTION: ${question.toUHexString()}, tlvMap=" + tlvMap.contentToString())
|
||||||
|
@ -11,11 +11,11 @@
|
|||||||
|
|
||||||
package test
|
package test
|
||||||
|
|
||||||
import io.ktor.utils.io.core.ByteReadPacket
|
import kotlinx.io.core.ByteReadPacket
|
||||||
import io.ktor.utils.io.core.Input
|
import kotlinx.io.core.Input
|
||||||
import io.ktor.utils.io.core.readAvailable
|
import kotlinx.io.core.readAvailable
|
||||||
import io.ktor.utils.io.core.use
|
import kotlinx.io.core.use
|
||||||
import io.ktor.utils.io.pool.useInstance
|
import kotlinx.io.pool.useInstance
|
||||||
import net.mamoe.mirai.utils.DefaultLogger
|
import net.mamoe.mirai.utils.DefaultLogger
|
||||||
import net.mamoe.mirai.utils.MiraiInternalAPI
|
import net.mamoe.mirai.utils.MiraiInternalAPI
|
||||||
import net.mamoe.mirai.utils.MiraiLoggerWithSwitch
|
import net.mamoe.mirai.utils.MiraiLoggerWithSwitch
|
||||||
|
@ -11,7 +11,7 @@ package net.mamoe.mirai.qqandroid.io.serialization
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
import io.ktor.utils.io.core.readBytes
|
import kotlinx.io.core.readBytes
|
||||||
import kotlinx.serialization.SerialId
|
import kotlinx.serialization.SerialId
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import net.mamoe.mirai.qqandroid.io.JceOutput
|
import net.mamoe.mirai.qqandroid.io.JceOutput
|
||||||
|
@ -28,7 +28,7 @@ fun main() {
|
|||||||
println(
|
println(
|
||||||
File(
|
File(
|
||||||
"""
|
"""
|
||||||
E:\Projects\QQAndroidFF\app\src\main\java\tencent\im\oidb\cmd0x857
|
E:\Projects\QQAndroidFF\app\src\main\java\tencent\im\msgrevoke
|
||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
)
|
)
|
||||||
.generateUnarrangedClasses().toMutableList().arrangeClasses().joinToString("\n\n")
|
.generateUnarrangedClasses().toMutableList().arrangeClasses().joinToString("\n\n")
|
||||||
|
@ -53,6 +53,7 @@ fun File.toExternalImage(): ExternalImage {
|
|||||||
md5 = this.inputStream().use { it.md5() },
|
md5 = this.inputStream().use { it.md5() },
|
||||||
imageFormat = this.nameWithoutExtension,
|
imageFormat = this.nameWithoutExtension,
|
||||||
input = this.inputStream(),
|
input = this.inputStream(),
|
||||||
|
inputSize = this.length(),
|
||||||
filename = this.name
|
filename = this.name
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@ import android.annotation.SuppressLint
|
|||||||
import android.net.wifi.WifiManager
|
import android.net.wifi.WifiManager
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.telephony.TelephonyManager
|
import android.telephony.TelephonyManager
|
||||||
import io.ktor.utils.io.core.toByteArray
|
import kotlinx.io.core.toByteArray
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import kotlinx.serialization.Transient
|
import kotlinx.serialization.Transient
|
||||||
import kotlinx.serialization.UnstableDefault
|
import kotlinx.serialization.UnstableDefault
|
||||||
|
@ -9,12 +9,12 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.utils.io
|
package net.mamoe.mirai.utils.io
|
||||||
|
|
||||||
import io.ktor.utils.io.core.ByteReadPacket
|
|
||||||
import io.ktor.utils.io.core.Closeable
|
|
||||||
import io.ktor.utils.io.nio.readPacketAtMost
|
|
||||||
import io.ktor.utils.io.nio.writePacket
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
import kotlinx.io.core.ByteReadPacket
|
||||||
|
import kotlinx.io.core.Closeable
|
||||||
|
import kotlinx.io.nio.readPacketAtMost
|
||||||
|
import kotlinx.io.nio.writePacket
|
||||||
import java.net.InetSocketAddress
|
import java.net.InetSocketAddress
|
||||||
import java.nio.channels.DatagramChannel
|
import java.nio.channels.DatagramChannel
|
||||||
import java.nio.channels.ReadableByteChannel
|
import java.nio.channels.ReadableByteChannel
|
||||||
|
@ -9,13 +9,13 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.utils.io
|
package net.mamoe.mirai.utils.io
|
||||||
|
|
||||||
import io.ktor.utils.io.core.ByteReadPacket
|
|
||||||
import io.ktor.utils.io.core.Closeable
|
|
||||||
import io.ktor.utils.io.core.ExperimentalIoApi
|
|
||||||
import io.ktor.utils.io.streams.readPacketAtMost
|
|
||||||
import io.ktor.utils.io.streams.writePacket
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
import kotlinx.io.core.ByteReadPacket
|
||||||
|
import kotlinx.io.core.Closeable
|
||||||
|
import kotlinx.io.core.ExperimentalIoApi
|
||||||
|
import kotlinx.io.streams.readPacketAtMost
|
||||||
|
import kotlinx.io.streams.writePacket
|
||||||
import net.mamoe.mirai.utils.MiraiInternalAPI
|
import net.mamoe.mirai.utils.MiraiInternalAPI
|
||||||
import java.io.BufferedInputStream
|
import java.io.BufferedInputStream
|
||||||
import java.io.BufferedOutputStream
|
import java.io.BufferedOutputStream
|
||||||
|
@ -12,7 +12,7 @@ package net.mamoe.mirai.utils
|
|||||||
import io.ktor.client.HttpClient
|
import io.ktor.client.HttpClient
|
||||||
import io.ktor.client.engine.cio.CIO
|
import io.ktor.client.engine.cio.CIO
|
||||||
import io.ktor.util.KtorExperimentalAPI
|
import io.ktor.util.KtorExperimentalAPI
|
||||||
import io.ktor.utils.io.pool.useInstance
|
import kotlinx.io.pool.useInstance
|
||||||
import net.mamoe.mirai.utils.io.ByteArrayPool
|
import net.mamoe.mirai.utils.io.ByteArrayPool
|
||||||
import java.io.ByteArrayOutputStream
|
import java.io.ByteArrayOutputStream
|
||||||
import java.io.DataInput
|
import java.io.DataInput
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai
|
package net.mamoe.mirai
|
||||||
|
|
||||||
import io.ktor.utils.io.core.toByteArray
|
import kotlinx.io.core.toByteArray
|
||||||
import net.mamoe.mirai.utils.MiraiExperimentalAPI
|
import net.mamoe.mirai.utils.MiraiExperimentalAPI
|
||||||
import net.mamoe.mirai.utils.MiraiInternalAPI
|
import net.mamoe.mirai.utils.MiraiInternalAPI
|
||||||
import net.mamoe.mirai.utils.md5
|
import net.mamoe.mirai.utils.md5
|
||||||
|
@ -10,8 +10,8 @@
|
|||||||
package net.mamoe.mirai.data
|
package net.mamoe.mirai.data
|
||||||
|
|
||||||
import io.ktor.client.request.get
|
import io.ktor.client.request.get
|
||||||
import io.ktor.utils.io.core.ByteReadPacket
|
import kotlinx.io.core.ByteReadPacket
|
||||||
import io.ktor.utils.io.core.readBytes
|
import kotlinx.io.core.readBytes
|
||||||
import net.mamoe.mirai.utils.Http
|
import net.mamoe.mirai.utils.Http
|
||||||
|
|
||||||
interface ImageLink {
|
interface ImageLink {
|
||||||
|
@ -21,7 +21,6 @@ import net.mamoe.mirai.event.events.ImageUploadEvent.Failed
|
|||||||
import net.mamoe.mirai.event.events.ImageUploadEvent.Succeed
|
import net.mamoe.mirai.event.events.ImageUploadEvent.Succeed
|
||||||
import net.mamoe.mirai.message.data.Image
|
import net.mamoe.mirai.message.data.Image
|
||||||
import net.mamoe.mirai.message.data.MessageChain
|
import net.mamoe.mirai.message.data.MessageChain
|
||||||
import net.mamoe.mirai.message.data.MessageSource
|
|
||||||
import net.mamoe.mirai.utils.ExternalImage
|
import net.mamoe.mirai.utils.ExternalImage
|
||||||
import net.mamoe.mirai.utils.MiraiExperimentalAPI
|
import net.mamoe.mirai.utils.MiraiExperimentalAPI
|
||||||
|
|
||||||
|
@ -12,9 +12,9 @@
|
|||||||
package net.mamoe.mirai.utils
|
package net.mamoe.mirai.utils
|
||||||
|
|
||||||
import io.ktor.utils.io.ByteReadChannel
|
import io.ktor.utils.io.ByteReadChannel
|
||||||
import io.ktor.utils.io.core.ByteReadPacket
|
|
||||||
import io.ktor.utils.io.core.Input
|
|
||||||
import kotlinx.io.InputStream
|
import kotlinx.io.InputStream
|
||||||
|
import kotlinx.io.core.ByteReadPacket
|
||||||
|
import kotlinx.io.core.Input
|
||||||
import net.mamoe.mirai.contact.Contact
|
import net.mamoe.mirai.contact.Contact
|
||||||
import net.mamoe.mirai.contact.Group
|
import net.mamoe.mirai.contact.Group
|
||||||
import net.mamoe.mirai.contact.QQ
|
import net.mamoe.mirai.contact.QQ
|
||||||
|
@ -15,13 +15,10 @@ package net.mamoe.mirai.utils
|
|||||||
|
|
||||||
|
|
||||||
import io.ktor.utils.io.ByteReadChannel
|
import io.ktor.utils.io.ByteReadChannel
|
||||||
import io.ktor.utils.io.ByteWriteChannel
|
|
||||||
import io.ktor.utils.io.close
|
|
||||||
import io.ktor.utils.io.core.Output
|
|
||||||
import io.ktor.utils.io.core.writeFully
|
|
||||||
import io.ktor.utils.io.pool.useInstance
|
|
||||||
import io.ktor.utils.io.readAvailable
|
import io.ktor.utils.io.readAvailable
|
||||||
import kotlinx.io.OutputStream
|
import kotlinx.io.OutputStream
|
||||||
|
import kotlinx.io.core.Output
|
||||||
|
import kotlinx.io.pool.useInstance
|
||||||
import net.mamoe.mirai.utils.io.ByteArrayPool
|
import net.mamoe.mirai.utils.io.ByteArrayPool
|
||||||
import kotlin.jvm.JvmMultifileClass
|
import kotlin.jvm.JvmMultifileClass
|
||||||
import kotlin.jvm.JvmName
|
import kotlin.jvm.JvmName
|
||||||
|
@ -9,9 +9,8 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.utils.cryptor
|
package net.mamoe.mirai.utils.cryptor
|
||||||
|
|
||||||
import io.ktor.utils.io.core.ByteReadPacket
|
import kotlinx.io.core.ByteReadPacket
|
||||||
import io.ktor.utils.io.core.readFully
|
import kotlinx.io.pool.useInstance
|
||||||
import io.ktor.utils.io.pool.useInstance
|
|
||||||
import net.mamoe.mirai.utils.MiraiInternalAPI
|
import net.mamoe.mirai.utils.MiraiInternalAPI
|
||||||
import net.mamoe.mirai.utils.io.ByteArrayPool
|
import net.mamoe.mirai.utils.io.ByteArrayPool
|
||||||
import net.mamoe.mirai.utils.io.toByteArray
|
import net.mamoe.mirai.utils.io.toByteArray
|
||||||
|
@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.utils.io
|
package net.mamoe.mirai.utils.io
|
||||||
|
|
||||||
import io.ktor.utils.io.core.ByteReadPacket
|
import kotlinx.io.core.ByteReadPacket
|
||||||
import io.ktor.utils.io.core.Closeable
|
import kotlinx.io.core.Closeable
|
||||||
import net.mamoe.mirai.utils.MiraiInternalAPI
|
import net.mamoe.mirai.utils.MiraiInternalAPI
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.utils.io
|
package net.mamoe.mirai.utils.io
|
||||||
|
|
||||||
import io.ktor.utils.io.core.ByteReadPacket
|
import kotlinx.io.core.ByteReadPacket
|
||||||
import io.ktor.utils.io.core.Closeable
|
import kotlinx.io.core.Closeable
|
||||||
import net.mamoe.mirai.utils.MiraiInternalAPI
|
import net.mamoe.mirai.utils.MiraiInternalAPI
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -13,11 +13,11 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.utils.io
|
package net.mamoe.mirai.utils.io
|
||||||
|
|
||||||
import io.ktor.utils.io.charsets.Charset
|
import kotlinx.io.charsets.Charset
|
||||||
import io.ktor.utils.io.charsets.Charsets
|
import kotlinx.io.charsets.Charsets
|
||||||
import io.ktor.utils.io.core.ByteReadPacket
|
import kotlinx.io.core.ByteReadPacket
|
||||||
import io.ktor.utils.io.core.String
|
import kotlinx.io.core.String
|
||||||
import io.ktor.utils.io.core.use
|
import kotlinx.io.core.use
|
||||||
import net.mamoe.mirai.utils.checkOffsetAndLength
|
import net.mamoe.mirai.utils.checkOffsetAndLength
|
||||||
import kotlin.contracts.ExperimentalContracts
|
import kotlin.contracts.ExperimentalContracts
|
||||||
import kotlin.contracts.InvocationKind
|
import kotlin.contracts.InvocationKind
|
||||||
|
@ -10,16 +10,14 @@
|
|||||||
package net.mamoe.mirai.utils.io
|
package net.mamoe.mirai.utils.io
|
||||||
|
|
||||||
import io.ktor.utils.io.ByteReadChannel
|
import io.ktor.utils.io.ByteReadChannel
|
||||||
import io.ktor.utils.io.core.ByteReadPacket
|
|
||||||
import io.ktor.utils.io.core.Input
|
|
||||||
import io.ktor.utils.io.core.isNotEmpty
|
|
||||||
import io.ktor.utils.io.core.readAvailable
|
|
||||||
import io.ktor.utils.io.pool.useInstance
|
|
||||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.flow
|
import kotlinx.coroutines.flow.flow
|
||||||
import kotlinx.coroutines.flow.flowOf
|
import kotlinx.coroutines.flow.flowOf
|
||||||
import kotlinx.io.InputStream
|
import kotlinx.io.InputStream
|
||||||
|
import kotlinx.io.core.ByteReadPacket
|
||||||
|
import kotlinx.io.core.Input
|
||||||
|
import kotlinx.io.pool.useInstance
|
||||||
import net.mamoe.mirai.utils.MiraiInternalAPI
|
import net.mamoe.mirai.utils.MiraiInternalAPI
|
||||||
|
|
||||||
|
|
||||||
|
@ -11,6 +11,8 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.utils.io
|
package net.mamoe.mirai.utils.io
|
||||||
|
|
||||||
|
import kotlinx.io.core.IoBuffer
|
||||||
|
import kotlinx.io.pool.ObjectPool
|
||||||
import kotlin.random.Random
|
import kotlin.random.Random
|
||||||
import kotlin.random.nextInt
|
import kotlin.random.nextInt
|
||||||
|
|
||||||
@ -200,3 +202,13 @@ fun ByteArray.toInt(): Int =
|
|||||||
(this[0].toInt().and(255) shl 24) + (this[1].toInt().and(255) shl 16) + (this[2].toInt().and(255) shl 8) + (this[3].toInt().and(
|
(this[0].toInt().and(255) shl 24) + (this[1].toInt().and(255) shl 16) + (this[2].toInt().and(255) shl 8) + (this[3].toInt().and(
|
||||||
255
|
255
|
||||||
) shl 0)
|
) shl 0)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从 [IoBuffer.Pool] [borrow][ObjectPool.borrow] 一个 [IoBuffer] 然后将 [this] 写入.
|
||||||
|
* 注意回收 ([ObjectPool.recycle])
|
||||||
|
*/
|
||||||
|
fun ByteArray.toIoBuffer(
|
||||||
|
offset: Int = 0,
|
||||||
|
length: Int = this.size - offset,
|
||||||
|
pool: ObjectPool<IoBuffer> = IoBuffer.Pool
|
||||||
|
): IoBuffer = pool.borrow().let { it.writeFully(this, offset, length); it }
|
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.utils.io
|
package net.mamoe.mirai.utils.io
|
||||||
|
|
||||||
import io.ktor.utils.io.core.*
|
import kotlinx.io.core.*
|
||||||
import net.mamoe.mirai.utils.MiraiInternalAPI
|
import net.mamoe.mirai.utils.MiraiInternalAPI
|
||||||
import net.mamoe.mirai.utils.coerceAtMostOrFail
|
import net.mamoe.mirai.utils.coerceAtMostOrFail
|
||||||
import net.mamoe.mirai.utils.cryptor.TEA
|
import net.mamoe.mirai.utils.cryptor.TEA
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
package net.mamoe.mirai.utils
|
package net.mamoe.mirai.utils
|
||||||
|
|
||||||
import io.ktor.client.HttpClient
|
import io.ktor.client.HttpClient
|
||||||
import io.ktor.utils.io.core.toByteArray
|
import kotlinx.io.core.toByteArray
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 时间戳
|
* 时间戳
|
||||||
|
@ -12,9 +12,9 @@
|
|||||||
package net.mamoe.mirai.message
|
package net.mamoe.mirai.message
|
||||||
|
|
||||||
import io.ktor.utils.io.ByteWriteChannel
|
import io.ktor.utils.io.ByteWriteChannel
|
||||||
import io.ktor.utils.io.core.Input
|
import kotlinx.io.core.Input
|
||||||
import io.ktor.utils.io.core.Output
|
import io.ktor.utils.io.core.Output
|
||||||
import io.ktor.utils.io.core.use
|
import kotlinx.io.core.use
|
||||||
import net.mamoe.mirai.contact.Contact
|
import net.mamoe.mirai.contact.Contact
|
||||||
import net.mamoe.mirai.contact.QQ
|
import net.mamoe.mirai.contact.QQ
|
||||||
import net.mamoe.mirai.message.data.Image
|
import net.mamoe.mirai.message.data.Image
|
||||||
|
@ -11,9 +11,9 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.message
|
package net.mamoe.mirai.message
|
||||||
|
|
||||||
import io.ktor.utils.io.core.Input
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
import kotlinx.io.core.Input
|
||||||
import net.mamoe.mirai.contact.Contact
|
import net.mamoe.mirai.contact.Contact
|
||||||
import net.mamoe.mirai.message.data.Image
|
import net.mamoe.mirai.message.data.Image
|
||||||
import net.mamoe.mirai.message.data.OfflineImage
|
import net.mamoe.mirai.message.data.OfflineImage
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.utils
|
package net.mamoe.mirai.utils
|
||||||
|
|
||||||
import io.ktor.utils.io.core.use
|
|
||||||
import kotlinx.coroutines.CoroutineName
|
import kotlinx.coroutines.CoroutineName
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.GlobalScope
|
import kotlinx.coroutines.GlobalScope
|
||||||
@ -21,6 +20,7 @@ import kotlinx.coroutines.io.writeFully
|
|||||||
import kotlinx.coroutines.sync.Mutex
|
import kotlinx.coroutines.sync.Mutex
|
||||||
import kotlinx.coroutines.sync.withLock
|
import kotlinx.coroutines.sync.withLock
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
import kotlinx.io.core.use
|
||||||
import net.mamoe.mirai.Bot
|
import net.mamoe.mirai.Bot
|
||||||
import net.mamoe.mirai.network.BotNetworkHandler
|
import net.mamoe.mirai.network.BotNetworkHandler
|
||||||
import java.awt.Image
|
import java.awt.Image
|
||||||
|
@ -12,13 +12,13 @@
|
|||||||
package net.mamoe.mirai.utils
|
package net.mamoe.mirai.utils
|
||||||
|
|
||||||
import io.ktor.utils.io.ByteReadChannel
|
import io.ktor.utils.io.ByteReadChannel
|
||||||
import io.ktor.utils.io.core.Input
|
|
||||||
import io.ktor.utils.io.core.buildPacket
|
|
||||||
import io.ktor.utils.io.core.copyTo
|
|
||||||
import io.ktor.utils.io.errors.IOException
|
|
||||||
import io.ktor.utils.io.streams.asOutput
|
|
||||||
import kotlinx.coroutines.Dispatchers.IO
|
import kotlinx.coroutines.Dispatchers.IO
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
import kotlinx.io.core.Input
|
||||||
|
import kotlinx.io.core.buildPacket
|
||||||
|
import kotlinx.io.core.copyTo
|
||||||
|
import kotlinx.io.errors.IOException
|
||||||
|
import kotlinx.io.streams.asOutput
|
||||||
import net.mamoe.mirai.utils.io.getRandomString
|
import net.mamoe.mirai.utils.io.getRandomString
|
||||||
import java.awt.image.BufferedImage
|
import java.awt.image.BufferedImage
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
@ -13,7 +13,7 @@ package net.mamoe.mirai.utils
|
|||||||
|
|
||||||
import io.ktor.client.HttpClient
|
import io.ktor.client.HttpClient
|
||||||
import io.ktor.client.engine.cio.CIO
|
import io.ktor.client.engine.cio.CIO
|
||||||
import io.ktor.utils.io.pool.useInstance
|
import kotlinx.io.pool.useInstance
|
||||||
import net.mamoe.mirai.utils.io.ByteArrayPool
|
import net.mamoe.mirai.utils.io.ByteArrayPool
|
||||||
import java.io.*
|
import java.io.*
|
||||||
import java.net.InetAddress
|
import java.net.InetAddress
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.utils
|
package net.mamoe.mirai.utils
|
||||||
|
|
||||||
import io.ktor.utils.io.core.toByteArray
|
import kotlinx.io.core.toByteArray
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import kotlinx.serialization.Transient
|
import kotlinx.serialization.Transient
|
||||||
import kotlinx.serialization.UnstableDefault
|
import kotlinx.serialization.UnstableDefault
|
||||||
|
@ -9,13 +9,13 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.utils.io
|
package net.mamoe.mirai.utils.io
|
||||||
|
|
||||||
import io.ktor.utils.io.core.ByteReadPacket
|
|
||||||
import io.ktor.utils.io.core.Closeable
|
|
||||||
import io.ktor.utils.io.core.ExperimentalIoApi
|
|
||||||
import io.ktor.utils.io.streams.readPacketAtMost
|
|
||||||
import io.ktor.utils.io.streams.writePacket
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
import kotlinx.io.core.ByteReadPacket
|
||||||
|
import kotlinx.io.core.Closeable
|
||||||
|
import kotlinx.io.core.ExperimentalIoApi
|
||||||
|
import kotlinx.io.streams.readPacketAtMost
|
||||||
|
import kotlinx.io.streams.writePacket
|
||||||
import net.mamoe.mirai.utils.MiraiInternalAPI
|
import net.mamoe.mirai.utils.MiraiInternalAPI
|
||||||
import java.io.BufferedInputStream
|
import java.io.BufferedInputStream
|
||||||
import java.io.BufferedOutputStream
|
import java.io.BufferedOutputStream
|
||||||
|
@ -9,12 +9,12 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.utils.io
|
package net.mamoe.mirai.utils.io
|
||||||
|
|
||||||
import io.ktor.utils.io.core.ByteReadPacket
|
|
||||||
import io.ktor.utils.io.core.Closeable
|
|
||||||
import io.ktor.utils.io.nio.readPacketAtMost
|
|
||||||
import io.ktor.utils.io.nio.writePacket
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
import kotlinx.io.core.ByteReadPacket
|
||||||
|
import kotlinx.io.core.Closeable
|
||||||
|
import kotlinx.io.nio.readPacketAtMost
|
||||||
|
import kotlinx.io.nio.writePacket
|
||||||
import java.net.InetSocketAddress
|
import java.net.InetSocketAddress
|
||||||
import java.nio.channels.DatagramChannel
|
import java.nio.channels.DatagramChannel
|
||||||
import java.nio.channels.ReadableByteChannel
|
import java.nio.channels.ReadableByteChannel
|
||||||
|
Loading…
Reference in New Issue
Block a user