Package handling
package handling
封包處理核心與封包定義:三大伺服器共用的 Netty 處理器、收/送 opcode 列舉、伺服器型別。
本套件是整個網路層的樞紐,其下三個子套件 handling.login/handling.channel
/handling.cashshop 各自實作登入、遊戲頻道與商城/拍賣的封包處理邏輯,
而 handling.world 則提供跨伺服器的進程內協調層。
核心類別為 MapleServerHandler:單一個 Netty ChannelDuplexHandler
由三種伺服器型別共用,依 ServerType 與頻道號區分。入站時於 channelRead()
讀取 short opcode,線性掃描 RecvPacketOpcode 比對後交由 handlePacket()
大型 switch 分派到各子套件的 handler。
RecvPacketOpcode 與 SendPacketOpcode 是版本專屬(client 149.1)的封包代碼列舉,
兩者皆實作 WritableIntValueHolder(可變的 16 位元 opcode 值),其數值由
recv.properties/send.properties 透過 ExternalCodeTableGetter 於啟動時注入;
缺少這些 properties 時所有 opcode 退化為 -2,伺服器將靜默丟棄全部入站封包。
其餘輔助型別:ServerType 列舉登入/世界/頻道/商城/拍賣五種邏輯伺服器;
Buffstat 為 buff 狀態值與位元位置的介面;MapleServerHandlerMBean 為 JMX 管理介面。
-
ClassDescriptionbuff 狀態項目的通用介面,定義數值位元與位元組位置的存取合約。從外部
Properties檔案載入並填入 opcode 整數碼表的工具類別。三大伺服器共用的 Netty 封包分派器與連線生命週期處理器。定義伺服器可接收的所有用戶端封包操作碼(opcode)列舉,版本固定為 client 149.1。定義伺服器主動發送給用戶端的所有封包操作碼(opcode)列舉,版本固定為 client 149.1。可讀寫short整數值的通用持有者介面,供 opcode 列舉實作。