diff --git a/Mage.Client/src/main/java/mage/client/remote/Session.java b/Mage.Client/src/main/java/mage/client/remote/Session.java index 21fd2669b46..b99bceeb7c9 100644 --- a/Mage.Client/src/main/java/mage/client/remote/Session.java +++ b/Mage.Client/src/main/java/mage/client/remote/Session.java @@ -322,6 +322,18 @@ public class Session { } } + public Collection getConnectedPlayers(UUID roomId) throws MageRemoteException { + try { + return server.getConnectedPlayers(roomId); + } catch (RemoteException ex) { + handleRemoteException(ex); + throw new MageRemoteException(); + } catch (MageException ex) { + handleMageException(ex); + throw new MageRemoteException(); + } + } + public TournamentView getTournament(UUID tournamentId) throws MageRemoteException { try { return server.getTournament(tournamentId); diff --git a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java index 65881c4ec82..4dac2f90910 100644 --- a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java +++ b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java @@ -432,6 +432,8 @@ class UpdateTablesTask extends SwingWorker> { private UUID roomId; private TablesPanel panel; + private final static Logger logger = Logging.getLogger(TablesPanel.class.getName()); + UpdateTablesTask(Session session, UUID roomId, TablesPanel panel) { this.session = session; this.roomId = roomId; @@ -442,6 +444,10 @@ class UpdateTablesTask extends SwingWorker> { protected Void doInBackground() throws Exception { while (!isCancelled()) { this.publish(session.getTables(roomId)); + logger.info("connected players:"); + for (String player : session.getConnectedPlayers(roomId)) { + logger.info(" " + player); + } Thread.sleep(1000); } return null; diff --git a/Mage.Common/src/mage/interfaces/Server.java b/Mage.Common/src/mage/interfaces/Server.java index 59a0f9792ea..e19e0923014 100644 --- a/Mage.Common/src/mage/interfaces/Server.java +++ b/Mage.Common/src/mage/interfaces/Server.java @@ -68,6 +68,7 @@ public interface Server extends Remote, CallbackServer { public boolean isTableOwner(UUID sessionId, UUID roomId, UUID tableId) throws RemoteException, MageException; public TableView getTable(UUID roomId, UUID tableId) throws RemoteException, MageException; public List getTables(UUID roomId) throws RemoteException, MageException; + public List getConnectedPlayers(UUID roomId) throws RemoteException, MageException; //chat methods public void sendChatMessage(UUID chatId, String userName, String message) throws RemoteException, MageException; diff --git a/Mage.Server/src/main/java/mage/server/ServerImpl.java b/Mage.Server/src/main/java/mage/server/ServerImpl.java index 630e78c919e..c40e3fecb0c 100644 --- a/Mage.Server/src/main/java/mage/server/ServerImpl.java +++ b/Mage.Server/src/main/java/mage/server/ServerImpl.java @@ -34,6 +34,7 @@ import java.rmi.registry.Registry; import java.rmi.server.ExportException; import java.rmi.server.RemoteServer; import java.rmi.server.UnicastRemoteObject; +import java.util.ArrayList; import java.util.List; import java.util.UUID; import java.util.concurrent.ExecutorService; @@ -220,6 +221,22 @@ public class ServerImpl extends RemoteServer implements Server { return null; } + @Override + public List getConnectedPlayers(UUID roomId) throws MageException { + try { + List players = new ArrayList(); + for (Session session : SessionManager.getInstance().getSessions().values()) { + players.add(session.getUsername()); + } + return players; + } + catch (Exception ex) { + handleException(ex); + } + return null; + } + + @Override public TableView getTable(UUID roomId, UUID tableId) throws MageException { try { diff --git a/Mage.Server/src/main/java/mage/server/SessionManager.java b/Mage.Server/src/main/java/mage/server/SessionManager.java index 839daf1dda1..2b5df343b33 100644 --- a/Mage.Server/src/main/java/mage/server/SessionManager.java +++ b/Mage.Server/src/main/java/mage/server/SessionManager.java @@ -28,6 +28,9 @@ package mage.server; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import mage.interfaces.MageException; @@ -74,5 +77,12 @@ public class SessionManager { public void removeSession(UUID sessionId) { sessions.remove(sessionId); } - + + public Map getSessions() { + Map map = new HashMap(); + for (Map.Entry entry : sessions.entrySet()) { + map.put(entry.getKey(), entry.getValue()); + } + return map; + } }