package com.rzg.zombieland.server.sesion; import java.util.HashMap; import java.util.Map; import com.rzg.zombieland.server.sesion.Sesion.SesionListener; /** * Mantiene en memoria todas las sesiones. * @author nicolas * */ public class ServicioSesion implements SesionListener { // La instancia en s� del servicio de partidas. private static ServicioSesion instancia; private Map<Jugador, Sesion> sesiones; /** * Constructor por defecto. */ private ServicioSesion() { sesiones = new HashMap<Jugador, Sesion>(); } /** * @return la instancia del servicio de partidas. */ public static ServicioSesion getInstancia() { if (instancia == null) instancia = new ServicioSesion(); return instancia; } /** * Agrega una sesi�n. * @param sesion */ public synchronized void addSesion(Sesion sesion) { sesiones.put(sesion.getJugador(), sesion); sesion.addListener(this); } /** * @param jugador * @return la sesi�n del jugador, o null si no existe. */ public synchronized Sesion getSesion(Jugador jugador) { return sesiones.get(jugador); } /** * Destruye la instancia del servicio (para tests). */ public static void matarInstancia() { instancia = null; } @Override public synchronized void notificarSesionCerrada(Sesion sesion) { sesiones.remove(sesion.getJugador()); } }