This commit is contained in:
2023-04-16 09:31:37 +08:00
parent c534b9508b
commit 31109849fe
30 changed files with 369 additions and 144 deletions
@@ -1,11 +1,7 @@
package cc.maxmc.msm.common.network.netty
import cc.maxmc.msm.common.network.BungeePacket
import cc.maxmc.msm.common.network.packet.CPacketAPICallback
import cc.maxmc.msm.common.network.packet.CPacketDebug
import cc.maxmc.msm.common.network.packet.PPacketAPICall
import cc.maxmc.msm.common.network.packet.PPacketDebug
import cc.maxmc.msm.common.utils.debug
import cc.maxmc.msm.common.network.packet.*
import com.google.common.collect.HashBiMap
object NetworkRegistry {
@@ -18,11 +14,16 @@ object NetworkRegistry {
registerPacket(PacketDirection.PARENT_BOUND, PPacketAPICall.PPacketCallContainPlayer::class.java)
registerPacket(PacketDirection.PARENT_BOUND, PPacketAPICall.PPacketCallInformEnd::class.java)
registerPacket(PacketDirection.PARENT_BOUND, PPacketAPICall.PPacketCallGetServer::class.java)
registerPacket(PacketDirection.PARENT_BOUND, PPacketServerStarted::class.java)
registerPacket(PacketDirection.PARENT_BOUND, PPacketChildInfo::class.java)
registerPacket(PacketDirection.CHILD_BOUND, CPacketDebug::class.java)
registerPacket(PacketDirection.CHILD_BOUND, CPacketAPICallback.CPacketCallbackGetPlayerServer::class.java)
registerPacket(PacketDirection.CHILD_BOUND, CPacketAPICallback.CPacketCallbackContainPlayer::class.java)
registerPacket(PacketDirection.CHILD_BOUND, CPacketAPICallback.CPacketCallbackInformEnd::class.java)
registerPacket(PacketDirection.CHILD_BOUND, CPacketAPICallback.CPacketCallbackGetServer::class.java)
registerPacket(PacketDirection.CHILD_BOUND, CPacketRequestServer::class.java)
registerPacket(PacketDirection.CHILD_BOUND, CPacketGetInfo::class.java)
}
private fun registerPacket(direction: PacketDirection, packet: Class<out BungeePacket>) {
@@ -1,9 +1,9 @@
package cc.maxmc.msm.common.network.packet
import cc.maxmc.msm.api.misc.ServerInfo
import cc.maxmc.msm.api.misc.MatchInfo
import cc.maxmc.msm.common.network.BungeePacket
import cc.maxmc.msm.common.utils.readServerInfo
import cc.maxmc.msm.common.utils.writeServerInfo
import cc.maxmc.msm.common.utils.readMatchInfo
import cc.maxmc.msm.common.utils.writeMatchInfo
import io.netty.buffer.ByteBuf
import net.md_5.bungee.protocol.DefinedPacket
import java.util.*
@@ -20,17 +20,16 @@ sealed class CPacketAPICallback(
}
class CPacketCallbackGetServer(
var serverInfo: ServerInfo = ServerInfo(),
uid: UUID = UUID.randomUUID()
var matchInfo: MatchInfo = MatchInfo(), uid: UUID = UUID.randomUUID()
) : CPacketAPICallback(uid = uid) {
override fun encode(buf: ByteBuf) {
super.encode(buf)
buf.writeServerInfo(serverInfo)
buf.writeMatchInfo(matchInfo)
}
override fun decode(buf: ByteBuf) {
super.decode(buf)
serverInfo = buf.readServerInfo()
matchInfo = buf.readMatchInfo()
}
}
@@ -39,23 +38,21 @@ sealed class CPacketAPICallback(
) : CPacketAPICallback(uid = uid)
class CPacketCallbackGetPlayerServer(
var serverInfo: ServerInfo,
uid: UUID = UUID.randomUUID()
var matchInfo: MatchInfo, uid: UUID = UUID.randomUUID()
) : CPacketAPICallback(uid = uid) {
override fun encode(buf: ByteBuf) {
super.encode(buf)
buf.writeServerInfo(serverInfo)
buf.writeMatchInfo(matchInfo)
}
override fun decode(buf: ByteBuf) {
super.decode(buf)
serverInfo = buf.readServerInfo()
matchInfo = buf.readMatchInfo()
}
}
class CPacketCallbackContainPlayer(
var value: Boolean,
uid: UUID = UUID.randomUUID()
var value: Boolean, uid: UUID = UUID.randomUUID()
) : CPacketAPICallback(uid = uid) {
override fun encode(buf: ByteBuf) {
super.encode(buf)
@@ -1,21 +1,23 @@
package cc.maxmc.msm.common.network.packet
import cc.maxmc.msm.api.misc.ServerInfo
import cc.maxmc.msm.common.network.BungeePacket
import cc.maxmc.msm.common.utils.readServerInfo
import cc.maxmc.msm.common.utils.writeServerInfo
import io.netty.buffer.ByteBuf
import net.md_5.bungee.protocol.DefinedPacket
import java.util.*
class CPacketRequestServer(
var type: String,
var uid: UUID = UUID.randomUUID()
var type: String = "",
var serverInfo: ServerInfo = ServerInfo(),
) : BungeePacket() {
override fun encode(buf: ByteBuf) {
DefinedPacket.writeUUID(uid, buf)
DefinedPacket.writeString(type, buf)
buf.writeServerInfo(serverInfo)
}
override fun decode(buf: ByteBuf) {
uid = DefinedPacket.readUUID(buf)
type = DefinedPacket.readString(buf)
serverInfo = buf.readServerInfo()
}
}
@@ -4,7 +4,8 @@ import cc.maxmc.msm.common.network.BungeePacket
import io.netty.buffer.ByteBuf
import net.md_5.bungee.protocol.DefinedPacket
class PPacketChildInfo(var portRange: MutableSet<Int> = HashSet(), var types: MutableSet<String>) : BungeePacket() {
class PPacketChildInfo(var portRange: MutableSet<Int> = HashSet(), var types: MutableSet<String> = HashSet()) :
BungeePacket() {
override fun encode(buf: ByteBuf) {
DefinedPacket.writeVarInt(portRange.size, buf)
portRange.forEach {
@@ -0,0 +1,19 @@
package cc.maxmc.msm.common.network.packet
import cc.maxmc.msm.api.misc.ServerInfo
import cc.maxmc.msm.common.network.BungeePacket
import cc.maxmc.msm.common.utils.readServerInfo
import cc.maxmc.msm.common.utils.writeServerInfo
import io.netty.buffer.ByteBuf
class PPacketServerStarted(
var serverInfo: ServerInfo = ServerInfo()
) : BungeePacket() {
override fun encode(buf: ByteBuf) {
buf.writeServerInfo(serverInfo)
}
override fun decode(buf: ByteBuf) {
serverInfo = buf.readServerInfo()
}
}
@@ -1,10 +1,10 @@
package cc.maxmc.msm.common.utils
import cc.maxmc.msm.api.misc.MatchInfo
import cc.maxmc.msm.api.misc.ServerInfo
import cc.maxmc.msm.common.network.ClusterPacketHandler
import cc.maxmc.msm.common.network.netty.ClusterMsgCodec
import cc.maxmc.msm.common.network.netty.NetworkRegistry
import com.google.common.net.HostAndPort
import io.netty.buffer.ByteBuf
import io.netty.channel.Channel
import io.netty.channel.ChannelInitializer
@@ -27,15 +27,25 @@ fun pipelineInit(direction: NetworkRegistry.PacketDirection) = channelInit<Socke
}
fun ByteBuf.writeServerInfo(info: ServerInfo) {
DefinedPacket.writeUUID(info.uid, this)
DefinedPacket.writeString(info.server.toString(), this)
DefinedPacket.writeVarInt(info.id, this)
}
fun ByteBuf.readServerInfo(): ServerInfo {
val uid = DefinedPacket.readUUID(this)
val hap = DefinedPacket.readString(this)
val id = DefinedPacket.readVarInt(this)
return ServerInfo(
HostAndPort.fromString(hap),
id
uid, hap
)
}
fun ByteBuf.writeMatchInfo(match: MatchInfo) {
DefinedPacket.writeVarInt(match.id, this)
writeServerInfo(match.server)
}
fun ByteBuf.readMatchInfo(): MatchInfo {
val id = DefinedPacket.readVarInt(this)
val server = readServerInfo()
return MatchInfo(id, server)
}