package edu.harvard.econcs.turkserver.server; import java.util.Collections; import java.util.Map; import java.util.Set; public interface Lobby { void setListener(LobbyListener listener); /** * Set a message that should be displayed to the lobby, if any * @param text */ void setMessage(String text); void userJoined(HITWorkerImpl hitw); /** * Updates the lobby status of a worker. * @param hitw * @param data * @return true if the lobby status changed */ boolean updateStatus(HITWorkerImpl hitw, Map<String, Object> data); /** * Try and remove worker from lobby * @param hitw * @return true if the worker was removed from the lobby */ boolean userQuit(HITWorkerImpl hitw); Object getStatus(HITWorkerImpl hitw); Set<HITWorkerImpl> getLobbyUsers(); public class NullLobby implements Lobby { boolean gotUsers = false; // For a unit test @Override public void setListener(LobbyListener listener) {} @Override public void setMessage(String text) {} @Override public void userJoined(HITWorkerImpl hitw) { System.out.printf("Warning: %s shouldn't have joined null lobby\n", hitw); } @Override public boolean updateStatus(HITWorkerImpl hitw, Map<String, Object> data) { System.out.printf("Warning: %s shouldn't have sent status to null lobby\n", hitw); return false; } @Override public boolean userQuit(HITWorkerImpl hitw) { return false; } @Override public Object getStatus(HITWorkerImpl hitw) { return null; } @Override public Set<HITWorkerImpl> getLobbyUsers() { gotUsers = true; return Collections.emptySet(); } } }