All pastes #383250 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-03-06 05:58 UTC
rendered paste body
package GameServer;

import GameServer.codec.RS2CodecFactory;
import GameServer.net.PacketQueue;
import GameServer.packet.Packet;
import org.apache.mina.common.IdleStatus;
import org.apache.mina.common.IoHandler;
import org.apache.mina.common.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;

/**
 * Handles the protocol events fired from MINA.
 */
public class ConnectionHandler implements IoHandler {
    private GameEngine engine;
    private PacketQueue packets;

    public ConnectionHandler(GameEngine engine) {
        this.engine = engine;
        packets = engine.getPacketQueue();
    }


    public void exceptionCaught(IoSession session, Throwable cause) {
        System.out.println(cause);
        session.close();
    }


    public void messageReceived(IoSession session, Object message) {
		Packet p = (Packet) message;
		packets.add(p);
    }


    public void messageSent(IoSession session, Object message) {
    }


    public void sessionClosed(IoSession session) {
        System.out.println("Session Closed "+session.getRemoteAddress());
    }


    public void sessionCreated(IoSession session) {
        session.getFilterChain().addFirst("protocolFilter", new ProtocolCodecFilter(new RS2CodecFactory()));
        System.out.println("Session Created "+session.getRemoteAddress());
    }


    public void sessionIdle(IoSession session, IdleStatus status) {
        System.out.println("Session Idle now closing"+session.getRemoteAddress());
        session.close();
    }

    public void sessionOpened(IoSession session) {
        System.out.println("Session Opened "+session.getRemoteAddress());
        session.setIdleTime(IdleStatus.BOTH_IDLE, 60);
    }
}