package org.pokenet.server.network; import java.util.HashMap; import org.apache.mina.core.service.IoHandlerAdapter; import org.apache.mina.core.session.IoSession; import org.pokenet.server.backend.entity.PlayerChar; import org.pokenet.server.network.message.PokenetMessage; /** * Handles packets received from players over UDP * @author shadowkanji * */ public class UdpProtocolHandler extends IoHandlerAdapter { private static HashMap<Integer, PlayerChar> m_playerList; /** * Default Constructor */ public UdpProtocolHandler() { m_playerList = new HashMap<Integer, PlayerChar>(); } /** * Called when an exception is caught */ public void exceptionCaught(IoSession session, Throwable t) throws Exception { t.printStackTrace(); } @Override public void messageReceived(IoSession session, Object o) throws Exception { /* * Nothing is sent over udp from client, this class merely allows packets * to be sent to client over udp. */ } /** * Adds a player to the udp player list * @param p */ public static void addPlayer(PlayerChar p) { synchronized(m_playerList) { m_playerList.put(p.getId(), p); } } /** * Removes a player from the udp player list * @param p */ public static void removePlayer(PlayerChar p) { synchronized(m_playerList) { m_playerList.remove(p.getId()); } } public static void writeMessage(IoSession s, PokenetMessage m) { try { if(s.isConnected()) s.write(m.getMessage()); } catch (Exception e) { e.printStackTrace(); } } }