Commit 67bf1971 authored by Him188's avatar Him188

Cancel packet receiver job before reconnecting

parent 2ae7c75a
...@@ -67,11 +67,8 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler ...@@ -67,11 +67,8 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
private val packetReceiveLock: Mutex = Mutex() private val packetReceiveLock: Mutex = Mutex()
private fun startPacketReceiverJobOrGet(): Job { private fun startPacketReceiverJobOrKill(cancelCause: CancellationException? = null): Job {
val job = _packetReceiverJob _packetReceiverJob?.cancel(cancelCause)
if (job != null && job.isActive && channel.isOpen) {
return job
}
return this.launch(CoroutineName("Incoming Packet Receiver")) { return this.launch(CoroutineName("Incoming Packet Receiver")) {
while (channel.isOpen) { while (channel.isOpen) {
...@@ -103,8 +100,10 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler ...@@ -103,8 +100,10 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
} }
channel = PlatformSocket() channel = PlatformSocket()
// TODO: 2020/2/14 连接多个服务器 // TODO: 2020/2/14 连接多个服务器
channel.connect("113.96.13.208", 8080) withTimeout(3000) {
startPacketReceiverJobOrGet() channel.connect("113.96.13.208", 8080)
}
startPacketReceiverJobOrKill(CancellationException("reconnect"))
// logger.info("Trying login") // logger.info("Trying login")
var response: WtLogin.Login.LoginPacketResponse = WtLogin.Login.SubCommand9(bot.client).sendAndExpect() var response: WtLogin.Login.LoginPacketResponse = WtLogin.Login.SubCommand9(bot.client).sendAndExpect()
......
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