rendered paste bodypackage 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);
}
}