package org.reunionemu.jreunion.login; import java.io.IOException; import java.net.InetSocketAddress; import java.nio.channels.SocketChannel; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.reunionemu.jreunion.login.handlers.LoginHandler; import org.reunionemu.jreunion.network.NetworkThread; import org.reunionemu.jreunion.server.packets.Packet; public class LoginServer extends NetworkThread<LoginConnection> { List<LoginConnection> connections = new LinkedList<LoginConnection>(); private Map<Class<?>,List<LoginHandler>> handlers = new HashMap<Class<?>,List<LoginHandler>>(); public LoginServer(int port) throws IOException { bind(new InetSocketAddress(port)); } @Override public void onAccept(LoginConnection connection) { connections.add(connection); } @Override public void onDisconnect(LoginConnection connection) { connections.remove(connection); } private void loadhandlers(){ handlers.clear(); for(Class<? extends LoginHandler> handler: LoginHandler.findAllHandlers()){ } } public void handlePacket(LoginConnection connection, Packet packet){ if(handlers==null){ loadhandlers(); } } @Override public LoginConnection createConnection(SocketChannel socketChannel) { try { return new LoginConnection(this, socketChannel); } catch (IOException e) { e.printStackTrace(); return null; } } }