Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.rse.network;
- import io.netty.channel.ChannelHandlerAdapter;
- import io.netty.channel.ChannelHandlerContext;
- import io.netty.channel.ChannelPromise;
- import io.netty.handler.timeout.IdleStateEvent;
- import java.io.IOException;
- import org.rse.model.mortals.players.Player;
- import org.rse.network.codec.Message;
- public final class ChannelHandler extends ChannelHandlerAdapter {
- private Player player;
- @Override
- public void disconnect(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception {
- if (player != null) {
- player.destroy();
- player = null;
- }
- super.disconnect(ctx, promise);
- }
- @Override
- public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
- handleEvent(ctx, msg);
- ctx.fireChannelRead(msg);
- }
- @Override
- public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
- handleEvent(ctx, evt);
- super.userEventTriggered(ctx, evt);
- }
- @Override
- public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
- if (cause != null && !(cause instanceof IOException))
- cause.printStackTrace();
- ctx.channel().close();
- super.exceptionCaught(ctx, cause);
- }
- private void handleEvent(ChannelHandlerContext ctx, Object msg) {
- if (msg == null)
- System.err.println("Invalid message received!");
- else {
- if (msg instanceof Player) {
- if (player != null)
- System.err.println("A player already exists for this channel!");
- else
- player = (Player) msg;
- } else if (msg instanceof Message) {
- if (player == null)
- System.err.println("Player does not exist for message received!");
- else
- player.queuePacket((Message) msg);
- } else if (msg instanceof IdleStateEvent)
- ctx.close();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement