Commit 05c73017 authored by Him188's avatar Him188

Login timeout

parent 26b3ac07
...@@ -23,6 +23,7 @@ import java.net.DatagramPacket ...@@ -23,6 +23,7 @@ import java.net.DatagramPacket
import java.net.DatagramSocket import java.net.DatagramSocket
import java.net.InetSocketAddress import java.net.InetSocketAddress
import java.util.* import java.util.*
import java.util.concurrent.atomic.AtomicBoolean
import javax.imageio.ImageIO import javax.imageio.ImageIO
/** /**
...@@ -61,11 +62,11 @@ internal class TIMBotNetworkHandler(private val bot: Bot) : BotNetworkHandler { ...@@ -61,11 +62,11 @@ internal class TIMBotNetworkHandler(private val bot: Bot) : BotNetworkHandler {
val ip = ipQueue.poll() ?: return LoginState.UNKNOWN//所有服务器均返回 UNKNOWN val ip = ipQueue.poll() ?: return LoginState.UNKNOWN//所有服务器均返回 UNKNOWN
return socket.touch(ip).let { state -> return socket.touch(ip).let { state ->
//if (state == LoginState.UNKNOWN || state == LoginState.TIMEOUT) { if (state == LoginState.UNKNOWN || state == LoginState.TIMEOUT) {
// loginInternal(ipQueue)//超时或未知, 重试连接下一个服务器 loginInternal(ipQueue)//超时或未知, 重试连接下一个服务器
//} else { } else {
state state
// } }
} }
} }
...@@ -187,17 +188,17 @@ internal class TIMBotNetworkHandler(private val bot: Bot) : BotNetworkHandler { ...@@ -187,17 +188,17 @@ internal class TIMBotNetworkHandler(private val bot: Bot) : BotNetworkHandler {
//bot.waitForPacket(ServerTouchResponsePacket::class, timeoutMillis) { //bot.waitForPacket(ServerTouchResponsePacket::class, timeoutMillis) {
// loginResult?.complete(LoginState.TIMEOUT) // loginResult?.complete(LoginState.TIMEOUT)
//} //}
var received = false val received = AtomicBoolean(false)
ServerPacketReceivedEvent.subscribe { ServerPacketReceivedEvent.subscribe {
if (it.packet is ServerTouchResponsePacket && it.bot === bot) { if (it.packet is ServerTouchResponsePacket && it.bot === bot) {
received = true received.set(true)
ListeningStatus.STOPPED ListeningStatus.STOPPED
} else } else
ListeningStatus.LISTENING ListeningStatus.LISTENING
} }
NetworkScope.launch { NetworkScope.launch {
delay(2000) delay(2000)
if (!received) { if (!received.get()) {
loginResult.complete(LoginState.TIMEOUT) loginResult.complete(LoginState.TIMEOUT)
} }
} }
......
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