Commit 6a85769e authored by Him188's avatar Him188

Use `io.ktor.utils.io` than `kotlinx.io`

parent 4018545d
...@@ -9,9 +9,9 @@ ...@@ -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.contact.* import net.mamoe.mirai.contact.*
import net.mamoe.mirai.data.* import net.mamoe.mirai.data.*
import net.mamoe.mirai.event.broadcast import net.mamoe.mirai.event.broadcast
......
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
package net.mamoe.mirai.qqandroid.io.serialization package net.mamoe.mirai.qqandroid.io.serialization
import kotlinx.io.charsets.Charset import io.ktor.utils.io.charsets.Charset
import kotlinx.io.core.* import io.ktor.utils.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,7 +12,10 @@ ...@@ -12,7 +12,10 @@
package net.mamoe.mirai.qqandroid.io.serialization package net.mamoe.mirai.qqandroid.io.serialization
import kotlinx.io.core.* import io.ktor.utils.io.core.BytePacketBuilder
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,10 +9,7 @@ ...@@ -9,10 +9,7 @@
package net.mamoe.mirai.qqandroid.message package net.mamoe.mirai.qqandroid.message
import kotlinx.io.core.buildPacket import io.ktor.utils.io.core.*
import kotlinx.io.core.discardExact
import kotlinx.io.core.readBytes
import kotlinx.io.core.readUInt
import net.mamoe.mirai.contact.Member import net.mamoe.mirai.contact.Member
import net.mamoe.mirai.message.data.* import net.mamoe.mirai.message.data.*
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.ImMsgBody import net.mamoe.mirai.qqandroid.network.protocol.data.proto.ImMsgBody
......
...@@ -9,12 +9,12 @@ ...@@ -9,12 +9,12 @@
package net.mamoe.mirai.qqandroid.network package net.mamoe.mirai.qqandroid.network
import io.ktor.utils.io.core.*
import kotlinx.atomicfu.AtomicRef import kotlinx.atomicfu.AtomicRef
import kotlinx.atomicfu.atomic import kotlinx.atomicfu.atomic
import kotlinx.coroutines.* import kotlinx.coroutines.*
import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.sync.withLock
import kotlinx.io.core.*
import net.mamoe.mirai.data.MultiPacket import net.mamoe.mirai.data.MultiPacket
import net.mamoe.mirai.data.Packet import net.mamoe.mirai.data.Packet
import net.mamoe.mirai.event.* import net.mamoe.mirai.event.*
...@@ -128,9 +128,7 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler ...@@ -128,9 +128,7 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
is WtLogin.Login.LoginPacketResponse.Captcha -> when (response) { is WtLogin.Login.LoginPacketResponse.Captcha -> when (response) {
is WtLogin.Login.LoginPacketResponse.Captcha.Picture -> { is WtLogin.Login.LoginPacketResponse.Captcha.Picture -> {
var result = response.data.withUse { var result = bot.configuration.loginSolver.onSolvePicCaptcha(bot, response.data)
bot.configuration.loginSolver.onSolvePicCaptcha(bot, this.readBytes())
}
if (result == null || result.length != 4) { if (result == null || result.length != 4) {
//refresh captcha //refresh captcha
result = "ABCD" result = "ABCD"
......
...@@ -11,9 +11,9 @@ ...@@ -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
...@@ -313,7 +313,7 @@ internal class Pt4Token(data: ByteArray, creationTime: Long, expireTime: Long) : ...@@ -313,7 +313,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 = kotlinx.io.core.String(this.readUShortLVByteArray()) internal inline fun Input.readUShortLVString(): String = io.ktor.utils.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 ...@@ -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,10 @@ ...@@ -12,10 +12,10 @@
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.*
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
......
...@@ -9,11 +9,9 @@ ...@@ -9,11 +9,9 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.jce package net.mamoe.mirai.qqandroid.network.protocol.data.jce
import kotlinx.io.core.toByteArray
import kotlinx.serialization.SerialId import kotlinx.serialization.SerialId
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import net.mamoe.mirai.qqandroid.io.JceStruct import net.mamoe.mirai.qqandroid.io.JceStruct
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
@Serializable @Serializable
internal class ModifyGroupCardReq( internal class ModifyGroupCardReq(
......
...@@ -9,10 +9,7 @@ ...@@ -9,10 +9,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.packet package net.mamoe.mirai.qqandroid.network.protocol.packet
import kotlinx.io.core.BytePacketBuilder import io.ktor.utils.io.core.*
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,10 +10,7 @@ ...@@ -10,10 +10,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.packet package net.mamoe.mirai.qqandroid.network.protocol.packet
import kotlinx.io.core.BytePacketBuilder import io.ktor.utils.io.core.*
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
...@@ -57,7 +54,7 @@ internal inline fun OutgoingPacketFactory<*>.buildOutgoingPacket( ...@@ -57,7 +54,7 @@ internal inline fun OutgoingPacketFactory<*>.buildOutgoingPacket(
writeByte(0) writeByte(0)
client.uin.toString().let { client.uin.toString().let {
writeInt(it.length + 4) writeInt(it.length + 4)
writeStringUtf8(it) writeText(it)
} }
encryptAndWrite(key) { encryptAndWrite(key) {
body(sequenceId) body(sequenceId)
...@@ -78,6 +75,7 @@ internal inline fun OutgoingPacketFactory<*>.buildOutgoingUniPacket( ...@@ -78,6 +75,7 @@ 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)
...@@ -86,7 +84,7 @@ internal inline fun OutgoingPacketFactory<*>.buildOutgoingUniPacket( ...@@ -86,7 +84,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)
writeStringUtf8(it) writeText(it)
} }
encryptAndWrite(key) { encryptAndWrite(key) {
writeUniPacket(commandName, client.outgoingPacketSessionId, extraData) { writeUniPacket(commandName, client.outgoingPacketSessionId, extraData) {
...@@ -109,6 +107,7 @@ internal inline fun IncomingPacketFactory<*>.buildResponseUniPacket( ...@@ -109,6 +107,7 @@ 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)
...@@ -117,7 +116,7 @@ internal inline fun IncomingPacketFactory<*>.buildResponseUniPacket( ...@@ -117,7 +116,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)
writeStringUtf8(it) writeText(it)
} }
encryptAndWrite(key) { encryptAndWrite(key) {
writeUniPacket(commandName, client.outgoingPacketSessionId, extraData) { writeUniPacket(commandName, client.outgoingPacketSessionId, extraData) {
...@@ -138,7 +137,7 @@ internal inline fun BytePacketBuilder.writeUniPacket( ...@@ -138,7 +137,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)
writeStringUtf8(it) writeText(it)
} }
writeInt(4 + 4) writeInt(4 + 4)
...@@ -185,7 +184,7 @@ internal inline fun OutgoingPacketFactory<*>.buildLoginOutgoingPacket( ...@@ -185,7 +184,7 @@ internal inline fun OutgoingPacketFactory<*>.buildLoginOutgoingPacket(
client.uin.toString().let { client.uin.toString().let {
writeInt(it.length + 4) writeInt(it.length + 4)
writeStringUtf8(it) writeText(it)
} }
if (key === NO_ENCRYPT) { if (key === NO_ENCRYPT) {
...@@ -240,7 +239,7 @@ internal inline fun BytePacketBuilder.writeSsoPacket( ...@@ -240,7 +239,7 @@ internal inline fun BytePacketBuilder.writeSsoPacket(
} }
commandName.let { commandName.let {
writeInt(it.length + 4) writeInt(it.length + 4)
writeStringUtf8(it) writeText(it)
} }
writeInt(4 + 4) writeInt(4 + 4)
...@@ -248,7 +247,7 @@ internal inline fun BytePacketBuilder.writeSsoPacket( ...@@ -248,7 +247,7 @@ internal inline fun BytePacketBuilder.writeSsoPacket(
client.device.imei.let { client.device.imei.let {
writeInt(it.length + 4) writeInt(it.length + 4)
writeStringUtf8(it) writeText(it)
} }
writeInt(4) writeInt(4)
......
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
package net.mamoe.mirai.qqandroid.network.protocol.packet package net.mamoe.mirai.qqandroid.network.protocol.packet
import kotlinx.io.core.* import io.ktor.utils.io.core.*
import kotlinx.io.pool.useInstance import io.ktor.utils.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,10 +9,7 @@ ...@@ -9,10 +9,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.packet package net.mamoe.mirai.qqandroid.network.protocol.packet
import kotlinx.io.core.BytePacketBuilder import io.ktor.utils.io.core.*
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 @@ ...@@ -9,7 +9,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.packet.chat package net.mamoe.mirai.qqandroid.network.protocol.packet.chat
import kotlinx.io.core.ByteReadPacket import io.ktor.utils.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,11 +9,7 @@ ...@@ -9,11 +9,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.packet.chat package net.mamoe.mirai.qqandroid.network.protocol.packet.chat
import kotlinx.io.core.ByteReadPacket import io.ktor.utils.io.core.*
import kotlinx.io.core.buildPacket
import kotlinx.io.core.readBytes
import kotlinx.io.core.toByteArray
import kotlinx.serialization.toUtf8Bytes
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
...@@ -379,7 +375,7 @@ internal class TroopManagement { ...@@ -379,7 +375,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): EditGroupNametag.Response { override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): Response {
return Response return Response
} }
......
...@@ -9,8 +9,7 @@ ...@@ -9,8 +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.client.HttpClient 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 @@ ...@@ -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 kotlinx.io.core.ByteReadPacket import io.ktor.utils.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,11 +9,10 @@ ...@@ -9,11 +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.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Deferred import kotlinx.coroutines.Deferred
import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ExperimentalCoroutinesApi
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 @@ ...@@ -9,7 +9,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.packet.list package net.mamoe.mirai.qqandroid.network.protocol.packet.list
import kotlinx.io.core.ByteReadPacket import io.ktor.utils.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 @@ ...@@ -9,7 +9,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.packet.login package net.mamoe.mirai.qqandroid.network.protocol.packet.login
import kotlinx.io.core.ByteReadPacket import io.ktor.utils.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 @@ ...@@ -9,7 +9,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.packet.login package net.mamoe.mirai.qqandroid.network.protocol.packet.login
import kotlinx.io.core.ByteReadPacket import io.ktor.utils.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.network.QQAndroidClient import net.mamoe.mirai.qqandroid.network.QQAndroidClient
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.packet.login package net.mamoe.mirai.qqandroid.network.protocol.packet.login
import kotlinx.io.core.ByteReadPacket import io.ktor.utils.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 ...@@ -11,7 +11,7 @@ package net.mamoe.mirai.qqandroid.network.protocol.packet.login
import io.ktor.util.InternalAPI import io.ktor.util.InternalAPI
import kotlinx.io.core.* import io.ktor.utils.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.*
...@@ -282,7 +282,7 @@ internal class WtLogin { ...@@ -282,7 +282,7 @@ internal class WtLogin {
} }
class Picture( class Picture(
val data: IoBuffer, val data: ByteArray,
val sign: ByteArray val sign: ByteArray
) : Captcha() { ) : Captcha() {
override fun toString(): String = "LoginPacketResponse.Captcha.Picture" override fun toString(): String = "LoginPacketResponse.Captcha.Picture"
...@@ -378,11 +378,8 @@ internal class WtLogin { ...@@ -378,11 +378,8 @@ 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 = buffer, data = imageData.readBytes(),
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 @@ ...@@ -11,11 +11,11 @@
package test package test
import kotlinx.io.core.ByteReadPacket import io.ktor.utils.io.core.ByteReadPacket
import kotlinx.io.core.Input import io.ktor.utils.io.core.Input
import kotlinx.io.core.readAvailable import io.ktor.utils.io.core.readAvailable
import kotlinx.io.core.use import io.ktor.utils.io.core.use
import kotlinx.io.pool.useInstance import io.ktor.utils.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 ...@@ -11,7 +11,7 @@ package net.mamoe.mirai.qqandroid.io.serialization
/* /*
import kotlinx.io.core.readBytes import io.ktor.utils.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
......
...@@ -25,7 +25,7 @@ fun main() { ...@@ -25,7 +25,7 @@ fun main() {
println( println(
File( File(
""" """
E:\Projects\QQAndroidFF\app\src\main\java\tencent\im\msgrevoke E:\Projects\QQAndroidFF\app\src\main\java\tencent\im\oidb\cmd0x857
""".trimIndent() """.trimIndent()
) )
.generateUnarrangedClasses().toMutableList().arrangeClasses().joinToString("\n\n") .generateUnarrangedClasses().toMutableList().arrangeClasses().joinToString("\n\n")
......
...@@ -41,7 +41,6 @@ fun File.toExternalImage(): ExternalImage { ...@@ -41,7 +41,6 @@ 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 ...@@ -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 kotlinx.io.core.toByteArray import io.ktor.utils.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,10 +9,10 @@ ...@@ -9,10 +9,10 @@
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 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.readPacketAtMost
import kotlinx.io.nio.writePacket import kotlinx.io.nio.writePacket
import java.net.InetSocketAddress import java.net.InetSocketAddress
......
...@@ -9,13 +9,13 @@ ...@@ -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 ...@@ -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 kotlinx.io.pool.useInstance import io.ktor.utils.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 @@ ...@@ -11,7 +11,7 @@
package net.mamoe.mirai package net.mamoe.mirai
import kotlinx.io.core.toByteArray import io.ktor.utils.io.core.toByteArray
import net.mamoe.mirai.utils.MiraiInternalAPI import net.mamoe.mirai.utils.MiraiInternalAPI
import net.mamoe.mirai.utils.md5 import net.mamoe.mirai.utils.md5
import kotlin.annotation.AnnotationTarget.* import kotlin.annotation.AnnotationTarget.*
......
...@@ -10,9 +10,8 @@ ...@@ -10,9 +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.util.KtorExperimentalAPI 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,6 +21,7 @@ import net.mamoe.mirai.event.events.ImageUploadEvent.Failed ...@@ -21,6 +21,7 @@ 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
...@@ -56,7 +57,8 @@ sealed class BotOfflineEvent : BotEvent { ...@@ -56,7 +57,8 @@ sealed class BotOfflineEvent : BotEvent {
/** /**
* 被挤下线 * 被挤下线
*/ */
data class Force(override val bot: Bot, val title: String, val message: String) : BotOfflineEvent(), Packet, BotPassiveEvent data class Force(override val bot: Bot, val title: String, val message: String) : BotOfflineEvent(), Packet,
BotPassiveEvent
/** /**
* 被服务器断开或因网络问题而掉线 * 被服务器断开或因网络问题而掉线
...@@ -92,6 +94,47 @@ sealed class MessageSendEvent : BotEvent, BotActiveEvent, AbstractCancellableEve ...@@ -92,6 +94,47 @@ sealed class MessageSendEvent : BotEvent, BotActiveEvent, AbstractCancellableEve
) : MessageSendEvent(), CancellableEvent ) : MessageSendEvent(), CancellableEvent
} }
/**
* 消息撤回事件. 可是任意消息被任意人撤回.
*/
sealed class MessageRecallEvent : BotEvent {
/**
* 消息原发送人
*/
abstract val authorId: Long
/**
* 消息 id.
* @see MessageSource.id
*/
abstract val messageId: Long
/**
* 原发送时间
*/
abstract val messageTime: Int // seconds
data class ByBot(
override val bot: Bot,
override val authorId: Long,
override val messageId: Long,
override val messageTime: Int
) : MessageRecallEvent(), BotActiveEvent, CancellableEvent {
override val isCancelled: Boolean get() = cancelled
private var cancelled: Boolean = false // 无法多继承
override fun cancel() {
cancelled = true
}
}
data class ByOthers(
override val bot: Bot,
override val authorId: Long,
override val messageId: Long,
override val messageTime: Int
) : MessageRecallEvent(), BotPassiveEvent, Packet
}
// endregion // endregion
// region 图片 // region 图片
......
...@@ -12,9 +12,9 @@ ...@@ -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,10 +15,11 @@ package net.mamoe.mirai.utils ...@@ -15,10 +15,11 @@ package net.mamoe.mirai.utils
import io.ktor.utils.io.ByteReadChannel import io.ktor.utils.io.ByteReadChannel
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,8 +9,9 @@ ...@@ -9,8 +9,9 @@
package net.mamoe.mirai.utils.cryptor package net.mamoe.mirai.utils.cryptor
import kotlinx.io.core.ByteReadPacket import io.ktor.utils.io.core.ByteReadPacket
import kotlinx.io.pool.useInstance import io.ktor.utils.io.core.readFully
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
......
...@@ -11,8 +11,7 @@ ...@@ -11,8 +11,7 @@
package net.mamoe.mirai.utils.io package net.mamoe.mirai.utils.io
import kotlinx.io.pool.DefaultPool import io.ktor.utils.io.pool.DefaultPool
import kotlinx.io.pool.ObjectPool
import net.mamoe.mirai.utils.MiraiInternalAPI import net.mamoe.mirai.utils.MiraiInternalAPI
/** /**
......
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
package net.mamoe.mirai.utils.io package net.mamoe.mirai.utils.io
import kotlinx.io.core.ByteReadPacket import io.ktor.utils.io.core.ByteReadPacket
import kotlinx.io.core.Closeable import io.ktor.utils.io.core.Closeable
import net.mamoe.mirai.utils.MiraiInternalAPI import net.mamoe.mirai.utils.MiraiInternalAPI
/** /**
......
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
package net.mamoe.mirai.utils.io package net.mamoe.mirai.utils.io
import kotlinx.io.core.ByteReadPacket import io.ktor.utils.io.core.ByteReadPacket
import kotlinx.io.core.Closeable import io.ktor.utils.io.core.Closeable
import net.mamoe.mirai.utils.MiraiInternalAPI import net.mamoe.mirai.utils.MiraiInternalAPI
/** /**
......
...@@ -13,11 +13,11 @@ ...@@ -13,11 +13,11 @@
package net.mamoe.mirai.utils.io package net.mamoe.mirai.utils.io
import kotlinx.io.charsets.Charset import io.ktor.utils.io.charsets.Charset
import kotlinx.io.charsets.Charsets import io.ktor.utils.io.charsets.Charsets
import kotlinx.io.core.ByteReadPacket import io.ktor.utils.io.core.ByteReadPacket
import kotlinx.io.core.String import io.ktor.utils.io.core.String
import kotlinx.io.core.use import io.ktor.utils.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,14 +10,16 @@ ...@@ -10,14 +10,16 @@
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,8 +11,6 @@ ...@@ -11,8 +11,6 @@
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
...@@ -202,13 +200,3 @@ fun ByteArray.toInt(): Int = ...@@ -202,13 +200,3 @@ 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 }
\ No newline at end of file
...@@ -13,11 +13,11 @@ ...@@ -13,11 +13,11 @@
package net.mamoe.mirai.utils.io package net.mamoe.mirai.utils.io
import io.ktor.utils.io.charsets.Charset
import io.ktor.utils.io.charsets.Charsets
import io.ktor.utils.io.core.*
import io.ktor.utils.io.pool.useInstance
import kotlinx.io.OutputStream import kotlinx.io.OutputStream
import kotlinx.io.charsets.Charset
import kotlinx.io.charsets.Charsets
import kotlinx.io.core.*
import kotlinx.io.pool.useInstance
import net.mamoe.mirai.utils.MiraiDebugAPI import net.mamoe.mirai.utils.MiraiDebugAPI
import net.mamoe.mirai.utils.MiraiInternalAPI import net.mamoe.mirai.utils.MiraiInternalAPI
import kotlin.jvm.JvmMultifileClass import kotlin.jvm.JvmMultifileClass
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
package net.mamoe.mirai.utils.io package net.mamoe.mirai.utils.io
import kotlinx.io.core.* import io.ktor.utils.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 @@ ...@@ -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 kotlinx.io.core.toByteArray import io.ktor.utils.io.core.toByteArray
/** /**
* 时间戳 * 时间戳
......
...@@ -11,8 +11,8 @@ ...@@ -11,8 +11,8 @@
package net.mamoe.mirai.message package net.mamoe.mirai.message
import kotlinx.io.core.Input import io.ktor.utils.io.core.Input
import kotlinx.io.core.use import io.ktor.utils.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 @@ ...@@ -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.utils.OverFileSizeMaxException import net.mamoe.mirai.utils.OverFileSizeMaxException
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
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
...@@ -20,7 +21,6 @@ import kotlinx.coroutines.io.writeFully ...@@ -20,7 +21,6 @@ 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 @@ ...@@ -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 ...@@ -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 kotlinx.io.pool.useInstance import io.ktor.utils.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 @@ ...@@ -9,7 +9,7 @@
package net.mamoe.mirai.utils package net.mamoe.mirai.utils
import kotlinx.io.core.toByteArray import io.ktor.utils.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 @@ ...@@ -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 @@ ...@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment