Class MaplePacketDecoder
java.lang.Object
io.netty.channel.ChannelHandlerAdapter
io.netty.channel.ChannelInboundHandlerAdapter
io.netty.handler.codec.ByteToMessageDecoder
server.netty.MaplePacketDecoder
- All Implemented Interfaces:
io.netty.channel.ChannelHandler, io.netty.channel.ChannelInboundHandler
public class MaplePacketDecoder
extends io.netty.handler.codec.ByteToMessageDecoder
Netty 入站處理器,負責將原始位元組流解密並還原為完整的封包位元組陣列。
繼承自 ByteToMessageDecoder,以兩段式狀態機運作:
- 第一段讀取 4 位元組封包頭,呼叫
MapleAESOFB.checkPacket(byte[])驗證合法性後取得封包長度, 存入DecoderState;若長度不符則直接關閉連線。 - 第二段待緩衝區累積足夠位元組後,呼叫
MapleAESOFB.crypt(byte[])解密並將明文位元組陣列 推入 Netty pipeline 的下游(即MapleServerHandler)。
當 ServerConstants.LOG_Handle_PACKETS 啟用時,於每個解密封包後印出
RecvPacketOpcode 名稱、包頭十六進位與封包長度,並寫入已知封包日誌。
DecoderState 以 Netty AttributeKey 綁定至個別 Channel,確保每個連線狀態互相獨立。
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class io.netty.handler.codec.ByteToMessageDecoder
io.netty.handler.codec.ByteToMessageDecoder.CumulatorNested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
io.netty.channel.ChannelHandler.Sharable -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final io.netty.util.AttributeKey<MaplePacketDecoder.DecoderState> Fields inherited from class io.netty.handler.codec.ByteToMessageDecoder
COMPOSITE_CUMULATOR, MERGE_CUMULATOR -
Constructor Summary
Constructors -
Method Summary
Methods inherited from class io.netty.handler.codec.ByteToMessageDecoder
actualReadableBytes, callDecode, channelInactive, channelRead, channelReadComplete, decodeLast, discardSomeReadBytes, handlerRemoved, handlerRemoved0, internalBuffer, isSingleDecode, setCumulator, setDiscardAfterReads, setSingleDecode, userEventTriggeredMethods inherited from class io.netty.channel.ChannelInboundHandlerAdapter
channelActive, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaughtMethods inherited from class io.netty.channel.ChannelHandlerAdapter
ensureNotSharable, handlerAdded, isSharableMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.netty.channel.ChannelHandler
handlerAdded
-
Field Details
-
DECODER_STATE_KEY
-
-
Constructor Details
-
MaplePacketDecoder
public MaplePacketDecoder()
-
-
Method Details
-
decode
-