· 9 years ago · Sep 09, 2016, 10:00 PM
1public class GameServerInitializer extends ChannelInitializer<SocketChannel>
2{
3 private static final LengthFieldBasedFrameEncoder LENGTH_ENCODER = new LengthFieldBasedFrameEncoder();
4 private static final PacketEncoder PACKET_ENCODER = new PacketEncoder(ByteOrder.LITTLE_ENDIAN, 0x8000 - 2);
5
6 @Override
7 protected void initChannel(SocketChannel ch)
8 {
9 final SecretKey blowfishKey = KeyManager.getInstance().generateBlowfishKey();
10 ch.pipeline().addLast("length-decoder", new LengthFieldBasedFrameDecoder(ByteOrder.LITTLE_ENDIAN, 0x8000 - 2, 0, 2, -2, 2, false));
11 ch.pipeline().addLast("length-encoder", LENGTH_ENCODER);
12 ch.pipeline().addLast("crypt-codec", new CryptCodec(new Crypt(blowfishKey)));
13 ch.pipeline().addLast(new LoggingHandler(LogLevel.INFO));
14
15 final GameServerHandler gameServerHandler = new GameServerHandler();
16 ch.pipeline().addLast("packet-decoder", new PacketDecoder<>(ByteOrder.LITTLE_ENDIAN, IncomingPackets.PACKET_ARRAY, gameServerHandler));
17 ch.pipeline().addLast("packet-encoder", PACKET_ENCODER);
18 ch.pipeline().addLast(gameServerHandler);
19 }
20}