sync
This commit is contained in:
@@ -8,6 +8,7 @@ import cc.maxmc.msm.common.utils.pluginScope
|
||||
import cc.maxmc.msm.parent.misc.ChildBungee
|
||||
import io.netty.channel.Channel
|
||||
import kotlinx.coroutines.launch
|
||||
import java.util.*
|
||||
import java.util.concurrent.CopyOnWriteArrayList
|
||||
|
||||
object ChildManager {
|
||||
@@ -32,9 +33,10 @@ object ChildManager {
|
||||
}
|
||||
|
||||
fun requestChild(type: String): ChildBungee {
|
||||
val uid = UUID.randomUUID()
|
||||
children.forEach {
|
||||
val ports = it.getAvailablePorts()
|
||||
log("${ports.size} ports: $ports")
|
||||
log("[${uid.toString().substring(0..8)}] ${it.channel.remoteAddress()} has ${ports.size} ports: $ports")
|
||||
}
|
||||
return children.filter { it.getAvailablePorts().isNotEmpty() && it.types.contains(type) }
|
||||
.maxByOrNull { it.getAvailablePorts().size } ?: throw IllegalStateException("当前无可用端口开启新服务器.")
|
||||
|
||||
@@ -35,11 +35,9 @@ object ServerManager {
|
||||
if (!serverMap.containsKey(it)) {
|
||||
serverMap[it] = ArrayList()
|
||||
}
|
||||
if (serverMap[it]!!.size <= 2) {
|
||||
pluginScope.launch {
|
||||
repeat(2) { _ ->
|
||||
requestServer(it)
|
||||
}
|
||||
if (serverMap[it]!!.size < 2) {
|
||||
repeat(2) { _ ->
|
||||
requestServer(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -82,6 +80,8 @@ object ServerManager {
|
||||
val child = ChildManager.requestChild(type)
|
||||
val list = serverMap[type]!!
|
||||
val server = child.requestServer(type)
|
||||
if (server.uid == ServerInfo.NULL_UID)
|
||||
|
||||
list.add(server)
|
||||
childMap[server] = child
|
||||
return server
|
||||
|
||||
@@ -5,6 +5,7 @@ import cc.maxmc.msm.common.network.BungeePacket
|
||||
import cc.maxmc.msm.common.network.packet.CPacketRequestServer
|
||||
import cc.maxmc.msm.common.network.packet.PPacketServerStarted
|
||||
import cc.maxmc.msm.common.utils.awaitPacket
|
||||
import cc.maxmc.msm.common.utils.log
|
||||
import io.netty.channel.Channel
|
||||
import java.net.InetSocketAddress
|
||||
import java.util.*
|
||||
@@ -28,6 +29,10 @@ class ChildBungee(
|
||||
val packet = awaitPacket(PPacketServerStarted::class.java) { ch, packet ->
|
||||
ch == channel && packet.serverInfo == server
|
||||
}
|
||||
if (packet.serverInfo.server == null) {
|
||||
log("§c| §7服务器启动失败,请检查子BC端 §c(${channel.remoteAddress()})§7 日志。")
|
||||
return ServerInfo()
|
||||
}
|
||||
usedPorts += port
|
||||
return packet.serverInfo
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user