public static void main(String[] args) { // Creo el servidor Servidor servidor = new Servidor(); // Envío 50 peticiones al servidor y finalizo. for (int i = 0; i < 50; i++) { Tarea tarea = new Tarea("Tarea " + i); servidor.ejecutarTarea(tarea); try { // Cuanto menos esperemos más tareas llegarán a la vez, // y el ejecutor creará más hilos y viceversa. // Probar con distintos valores de espera. Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } // Finalizo el servidor servidor.apagarServidor(); }
public static void Testserver() { Servidor s = new Servidor(9999); s.ejecutar(); }
private void processMessage(Object message) { if (message instanceof Map) { @SuppressWarnings("unchecked") Map<String, Object> msg = (Map<String, Object>) message; String action = Util.getAction(msg); Object parameter = Util.getParameter(msg); switch (action) { case Acciones.LOGON: String login = (String) parameter; if (server.existsLogin(login)) { msg = Util.prepareMsg(Acciones.LOGON_FAILURE, "login " + login + " en uso."); sendMsg(msg); } else { this.username = login; msg = Util.prepareMsg(Acciones.LOGON_SUCESSFUL, null); sendMsg(msg); msg = Util.prepareMsg(Acciones.MESSAGE, login + " conectado."); server.sendMsgToAll(msg); } break; case Acciones.GIVEME_ROOM: if (server.getRoomPlayer(username).isGameStarted() && server.getRoomPlayer(username).getPlayer(this.username).isToken()) { msg = Util.prepareMsg(Acciones.UPDATE_ROOM, server.getRoomPlayer(username)); sendMsg(msg); } break; case Acciones.UPDATE_ROOM: if (parameter instanceof Sala) { Sala room = server.getRoomPlayer(username); if (room.isGameStarted() && room.getPlayer(this.username).isToken()) { room = (Sala) parameter; room.next(); server.setRoom(room); msg = Util.prepareMsg(Acciones.UPDATE_ROOM, room); server.sendMsgToPlayers(msg, room); } } break; case Acciones.DISCONNECT: try { msg = Util.prepareMsg(Acciones.MESSAGE, this.username + " salir."); disconnect(); server.sendMsgToAll(msg); } catch (IOException e) { e.printStackTrace(); } break; case Acciones.ONLINE_USERS: msg = Util.prepareMsg(Acciones.ONLINE_USERS, server.getAllUsersOnline()); sendMsg(msg); break; case Acciones.INVITE: String user = (String) parameter; if (server.getUsersOnline().contains(user) && !server.getUsersInRoom().contains(user)) { Conexion recptorConnection = server.getConnection(user); if (recptorConnection != null) { if (!recptorConnection.isAcceptedInvite()) { Invitacion invite = server.getInvite(username, user); if (invite == null) { invite = new Invitacion(username, user); server.addInvite(invite); recptorConnection.sendMsg(Util.prepareMsg(Acciones.INVITE, invite)); sendMsg( Util.prepareMsg(Acciones.STATUS_INVITE, server.getInvitesIssuing(username))); } else { sendMsg( Util.prepareMsg( Acciones.MESSAGE, "Hay una invitacion para el usuario " + user)); } } else { sendMsg(Util.prepareMsg(Acciones.MESSAGE, "El usuario ha sido invitado")); } } else { sendMsg(Util.prepareMsg(Acciones.MESSAGE, "Receptor no encontrado")); } } else { msg = Util.prepareMsg(Acciones.MESSAGE, user + " ya esta jugando."); sendMsg(msg); } break; case Acciones.RESPONSE_INVITE: Invitacion responseInvite = (Invitacion) parameter; Invitacion serverInvite = server.getInvite(responseInvite.getIssuing(), responseInvite.getReceptor()); if (serverInvite != null) { serverInvite.setStatus(responseInvite.getStatus()); if (serverInvite.getStatus().equals(Invitacion.ACEPTADO) && !isAcceptedInvite()) { setAcceptedInvite(true); } } Conexion issuingConnection = server.getConnection(responseInvite.getIssuing()); List<Invitacion> invites = server.getInvitesIssuing(responseInvite.getIssuing()); issuingConnection.sendMsg(Util.prepareMsg(Acciones.STATUS_INVITE, invites)); break; case Acciones.CHAT_MESSAGE: String chatMsg = (String) parameter; server.sendMsgToAll(Util.prepareMsg(Acciones.CHAT_MESSAGE, username + "> " + chatMsg)); break; case Acciones.START_GAME: List<String> usernamePlayers = (List<String>) parameter; if (server.startGame(usernamePlayers)) { msg = Util.prepareMsg(Acciones.MESSAGE, "El juego inicio"); server.sendMsgToPlayers(msg, server.getRoomPlayer(username)); } break; default: break; } } }