diff --git a/Mage.Client/src/main/java/mage/client/chat/ChatPanel.java b/Mage.Client/src/main/java/mage/client/chat/ChatPanel.java index d3ae8b6012c..7d9bc82b50b 100644 --- a/Mage.Client/src/main/java/mage/client/chat/ChatPanel.java +++ b/Mage.Client/src/main/java/mage/client/chat/ChatPanel.java @@ -370,8 +370,8 @@ public class ChatPanel extends javax.swing.JPanel { private final String[] columnNames = new String[]{"Players", "Info", "Games", "Connection"}; private UsersView[] players = new UsersView[0]; - public void loadData(Collection roomUserInfoList) throws MageRemoteException { - RoomUsersView roomUserInfo = roomUserInfoList.iterator().next(); + public void loadData(RoomUsersView roomUserInfo) throws MageRemoteException { +// RoomUsersView roomUserInfo = roomUserInfoList.iterator().next(); this.players = roomUserInfo.getUsersView().toArray(new UsersView[0]); JTableHeader th = jTablePlayers.getTableHeader(); TableColumnModel tcm = th.getColumnModel(); @@ -535,9 +535,9 @@ public class ChatPanel extends javax.swing.JPanel { } }//GEN-LAST:event_txtMessageKeyTyped - public void setRoomUserInfo(List> view) { + public void setRoomUserInfo(RoomUsersView view) { try { - tableModel.loadData(view.get(0)); + tableModel.loadData(view); } catch (Exception ex) { this.players.clear(); } 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 91325a1ba72..7eb8cea2213 100644 --- a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java +++ b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java @@ -91,6 +91,7 @@ import mage.remote.MageRemoteException; //import mage.remote.Session; import mage.view.MatchView; import mage.view.RoomUsersView; +import mage.view.RoomView; import mage.view.TableView; import org.apache.log4j.Logger; import org.mage.card.arcane.Util; @@ -107,9 +108,9 @@ public class TablesPanel extends javax.swing.JPanel { private TableTableModel tableModel; private MatchesTableModel matchesModel; private UUID roomId; - private UpdateTablesTask updateTablesTask; - private UpdatePlayersTask updatePlayersTask; - private UpdateMatchesTask updateMatchesTask; + private UpdateRoomTask updateRoomTask; +// private UpdatePlayersTask updatePlayersTask; +// private UpdateMatchesTask updateMatchesTask; private JoinTableDialog joinTableDialog; private NewTableDialog newTableDialog; private NewTournamentDialog newTournamentDialog; @@ -389,38 +390,38 @@ public class TablesPanel extends javax.swing.JPanel { public void startTasks() { if (client != null) { - if (updateTablesTask == null || updateTablesTask.isDone()) { - updateTablesTask = new UpdateTablesTask(client, roomId, this); - updateTablesTask.execute(); - } - if (updatePlayersTask == null || updatePlayersTask.isDone()) { - updatePlayersTask = new UpdatePlayersTask(client, roomId, this.chatPanel); - updatePlayersTask.execute(); - } - if (this.btnStateFinished.isSelected()) { - if (updateMatchesTask == null || updateMatchesTask.isDone()) { - updateMatchesTask = new UpdateMatchesTask(client, roomId, this); - updateMatchesTask.execute(); - } - } - else { - if (updateMatchesTask != null) { - updateMatchesTask.cancel(true); - } + if (updateRoomTask == null || updateRoomTask.isDone()) { + updateRoomTask = new UpdateRoomTask(client, roomId, this, this.chatPanel); + updateRoomTask.execute(); } +// if (updatePlayersTask == null || updatePlayersTask.isDone()) { +// updatePlayersTask = new UpdatePlayersTask(client, roomId, this.chatPanel); +// updatePlayersTask.execute(); +// } +// if (this.btnStateFinished.isSelected()) { +// if (updateMatchesTask == null || updateMatchesTask.isDone()) { +// updateMatchesTask = new UpdateMatchesTask(client, roomId, this); +// updateMatchesTask.execute(); +// } +// } +// else { +// if (updateMatchesTask != null) { +// updateMatchesTask.cancel(true); +// } +// } } } public void stopTasks() { - if (updateTablesTask != null) { - updateTablesTask.cancel(true); - } - if (updatePlayersTask != null) { - updatePlayersTask.cancel(true); - } - if (updateMatchesTask != null) { - updateMatchesTask.cancel(true); + if (updateRoomTask != null) { + updateRoomTask.cancel(true); } +// if (updatePlayersTask != null) { +// updatePlayersTask.cancel(true); +// } +// if (updateMatchesTask != null) { +// updateMatchesTask.cancel(true); +// } } public void showTables(UUID roomId) { @@ -1402,28 +1403,30 @@ class TableTableModel extends AbstractTableModel { } -class UpdateTablesTask extends SwingWorker> { +class UpdateRoomTask extends SwingWorker { private final Client client; private final UUID roomId; private final TablesPanel panel; + private final ChatPanel chat; - private static final Logger logger = Logger.getLogger(UpdateTablesTask.class); + private static final Logger logger = Logger.getLogger(UpdateRoomTask.class); private int count = 0; - UpdateTablesTask(Client client, UUID roomId, TablesPanel panel) { + UpdateRoomTask(Client client, UUID roomId, TablesPanel panel, ChatPanel chat) { this.client = client; this.roomId = roomId; this.panel = panel; + this.chat = chat; } @Override protected Void doInBackground() throws Exception { while (!isCancelled()) { - Collection tables = client.getTables(roomId); - if (tables != null) { - this.publish(tables); + RoomView room = client.getRoom(roomId); + if (room != null) { + this.publish(room); } Thread.sleep(3000); } @@ -1431,8 +1434,10 @@ class UpdateTablesTask extends SwingWorker> { } @Override - protected void process(List> view) { - panel.updateTables(view.get(0)); + protected void process(List view) { + panel.updateTables(view.get(0).getTableViews()); + panel.updateMatches(view.get(0).getMatchViews()); + chat.setRoomUserInfo(view.get(0).getRoomUsersView()); count++; if (count > 60) { count = 0; @@ -1451,44 +1456,44 @@ class UpdateTablesTask extends SwingWorker> { } -class UpdatePlayersTask extends SwingWorker> { - - private final Client client; - private final UUID roomId; - private final ChatPanel chat; - - private static final Logger logger = Logger.getLogger(UpdatePlayersTask.class); - - UpdatePlayersTask(Client client, UUID roomId, ChatPanel chat) { - this.client = client; - this.roomId = roomId; - this.chat = chat; - } - - @Override - protected Void doInBackground() throws Exception { - while (!isCancelled()) { - this.publish(client.getRoomUsers(roomId)); - Thread.sleep(3000); - } - return null; - } - - @Override - protected void process(List> roomUserInfo) { - chat.setRoomUserInfo(roomUserInfo); - } - - @Override - protected void done() { - try { - get(); - } catch (InterruptedException | ExecutionException ex) { - logger.fatal("Update Players Task error", ex); - } catch (CancellationException ex) {} - } - -} +//class UpdatePlayersTask extends SwingWorker> { +// +// private final Client client; +// private final UUID roomId; +// private final ChatPanel chat; +// +// private static final Logger logger = Logger.getLogger(UpdatePlayersTask.class); +// +// UpdatePlayersTask(Client client, UUID roomId, ChatPanel chat) { +// this.client = client; +// this.roomId = roomId; +// this.chat = chat; +// } +// +// @Override +// protected Void doInBackground() throws Exception { +// while (!isCancelled()) { +// this.publish(client.getRoomUsers(roomId)); +// Thread.sleep(3000); +// } +// return null; +// } +// +// @Override +// protected void process(List> roomUserInfo) { +// chat.setRoomUserInfo(roomUserInfo); +// } +// +// @Override +// protected void done() { +// try { +// get(); +// } catch (InterruptedException | ExecutionException ex) { +// logger.fatal("Update Players Task error", ex); +// } catch (CancellationException ex) {} +// } +// +//} class MatchesTableModel extends AbstractTableModel { @@ -1592,47 +1597,47 @@ class MatchesTableModel extends AbstractTableModel { } -class UpdateMatchesTask extends SwingWorker> { - - private final Client client; - private final UUID roomId; - private final TablesPanel panel; - - private static final Logger logger = Logger.getLogger(UpdateTablesTask.class); - - UpdateMatchesTask(Client client, UUID roomId, TablesPanel panel) { - this.client = client; - this.roomId = roomId; - this.panel = panel; - } - - @Override - protected Void doInBackground() throws Exception { - while (!isCancelled()) { - Collection matches = client.getFinishedMatches(roomId); - if (matches != null) { - this.publish(matches); - } - Thread.sleep(10000); - } - return null; - } - - @Override - protected void process(List> view) { - panel.updateMatches(view.get(0)); - } - - @Override - protected void done() { - try { - get(); - } catch (InterruptedException | ExecutionException ex) { - logger.fatal("Update Matches Task error", ex); - } catch (CancellationException ex) {} - } - -} +//class UpdateMatchesTask extends SwingWorker> { +// +// private final Client client; +// private final UUID roomId; +// private final TablesPanel panel; +// +// private static final Logger logger = Logger.getLogger(UpdateTablesTask.class); +// +// UpdateMatchesTask(Client client, UUID roomId, TablesPanel panel) { +// this.client = client; +// this.roomId = roomId; +// this.panel = panel; +// } +// +// @Override +// protected Void doInBackground() throws Exception { +// while (!isCancelled()) { +// Collection matches = client.getFinishedMatches(roomId); +// if (matches != null) { +// this.publish(matches); +// } +// Thread.sleep(10000); +// } +// return null; +// } +// +// @Override +// protected void process(List> view) { +// panel.updateMatches(view.get(0)); +// } +// +// @Override +// protected void done() { +// try { +// get(); +// } catch (InterruptedException | ExecutionException ex) { +// logger.fatal("Update Matches Task error", ex); +// } catch (CancellationException ex) {} +// } +// +//} class GameChooser extends JPopupMenu { diff --git a/Mage.Common/src/mage/view/RoomView.java b/Mage.Common/src/mage/view/RoomView.java new file mode 100644 index 00000000000..a9bebd9fc64 --- /dev/null +++ b/Mage.Common/src/mage/view/RoomView.java @@ -0,0 +1,65 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.view; + +import java.io.Serializable; +import java.util.List; + +/** + * + * @author LevelX2 + */ +public class RoomView implements Serializable { + private static final long serialVersionUID = 1L; + + private final RoomUsersView roomUsersView; + private final List matchViews; + private final List tableViews; + + public RoomView(RoomUsersView roomUsersView, List tableViews, List matchViews) { + + this.roomUsersView = roomUsersView; + this.matchViews = matchViews; + this.tableViews = tableViews; + + } + + public RoomUsersView getRoomUsersView() { + return roomUsersView; + } + + public List getMatchViews() { + return matchViews; + } + + public List getTableViews() { + return tableViews; + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/Client.java b/Mage.Network/src/main/java/org/mage/network/Client.java index 9e73ee6c5eb..46ca55dab8f 100644 --- a/Mage.Network/src/main/java/org/mage/network/Client.java +++ b/Mage.Network/src/main/java/org/mage/network/Client.java @@ -29,6 +29,7 @@ import mage.utils.MageVersion; import mage.view.DraftPickView; import mage.view.MatchView; import mage.view.RoomUsersView; +import mage.view.RoomView; import mage.view.TableView; import mage.view.TournamentView; import mage.view.UserView; @@ -40,6 +41,7 @@ import org.mage.network.handlers.client.ChatRoomHandler; import org.mage.network.handlers.client.ClientRegisteredMessageHandler; import org.mage.network.handlers.client.InformClientMessageHandler; import org.mage.network.handlers.client.ServerMessageHandler; +import org.mage.network.handlers.client.RoomMessageHandler; import org.mage.network.interfaces.MageClient; import org.mage.network.model.MessageType; @@ -61,6 +63,7 @@ public class Client { private final InformClientMessageHandler informClientMessageHandler; private final ClientRegisteredMessageHandler clientRegisteredMessageHandler; private final ServerMessageHandler serverMessageHandler; + private final RoomMessageHandler roomMessageHandler; private SslContext sslCtx; private Channel channel; @@ -77,6 +80,7 @@ public class Client { informClientMessageHandler = new InformClientMessageHandler(client); clientRegisteredMessageHandler = new ClientRegisteredMessageHandler(client); serverMessageHandler = new ServerMessageHandler(); + roomMessageHandler = new RoomMessageHandler(); } public boolean connect(String userName, String host, int port, boolean ssl, MageVersion version) { @@ -132,6 +136,7 @@ public class Client { ch.pipeline().addLast("clientRegisteredMessageHandler", clientRegisteredMessageHandler); ch.pipeline().addLast("chatRoomHandler", chatRoomHandler); ch.pipeline().addLast("serverMessageHandler", serverMessageHandler); + ch.pipeline().addLast("tablesMessageHandler", roomMessageHandler); } } @@ -304,17 +309,22 @@ public class Client { return null; } - public Collection getTables(UUID roomId) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + public RoomView getRoom(UUID roomId) { + try { + return roomMessageHandler.getRoom(roomId); + } catch (Exception ex) { + logger.error("Error getting tables", ex); + } + return null; } - public Collection getFinishedMatches(UUID roomId) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. - } - - public Collection getRoomUsers(UUID roomId) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. - } +// public Collection getFinishedMatches(UUID roomId) { +// throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. +// } +// +// public Collection getRoomUsers(UUID roomId) { +// throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. +// } public void sendPlayerInteger(UUID gameId, int i) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. diff --git a/Mage.Network/src/main/java/org/mage/network/Server.java b/Mage.Network/src/main/java/org/mage/network/Server.java index 41511f7e43e..9d50da63d26 100644 --- a/Mage.Network/src/main/java/org/mage/network/Server.java +++ b/Mage.Network/src/main/java/org/mage/network/Server.java @@ -31,6 +31,7 @@ import org.mage.network.handlers.server.ConnectionHandler; import org.mage.network.handlers.server.JoinChatMessageHandler; import org.mage.network.handlers.server.LeaveChatMessageHandler; import org.mage.network.handlers.server.RegisterClientMessageHandler; +import org.mage.network.handlers.server.RoomMessageHandler; import org.mage.network.handlers.server.ServerMessageHandler; import org.mage.network.interfaces.MageServer; import org.mage.network.model.InformClientMessage; @@ -62,6 +63,7 @@ public class Server { private final JoinChatMessageHandler joinChatMessageHandler; private final LeaveChatMessageHandler leaveChatMessageHandler; private final ServerMessageHandler serverMessageHandler; + private final RoomMessageHandler roomMessageHandler; public Server(MageServer server) { heartbeatHandler = new HeartbeatHandler(server); @@ -71,6 +73,7 @@ public class Server { leaveChatMessageHandler = new LeaveChatMessageHandler(server); chatRoomIdHandler = new ChatRoomIdHandler(server); serverMessageHandler = new ServerMessageHandler(server); + roomMessageHandler = new RoomMessageHandler(server); } public void start(int port, boolean ssl) throws Exception { @@ -125,6 +128,7 @@ public class Server { ch.pipeline().addLast(handlersExecutor, joinChatMessageHandler); ch.pipeline().addLast(handlersExecutor, leaveChatMessageHandler); ch.pipeline().addLast(handlersExecutor, serverMessageHandler); + ch.pipeline().addLast(handlersExecutor, roomMessageHandler); } } diff --git a/Mage.Network/src/main/java/org/mage/network/handlers/client/RoomMessageHandler.java b/Mage.Network/src/main/java/org/mage/network/handlers/client/RoomMessageHandler.java new file mode 100644 index 00000000000..4ff9dcc3759 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/handlers/client/RoomMessageHandler.java @@ -0,0 +1,38 @@ +package org.mage.network.handlers.client; + +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.SimpleChannelInboundHandler; +import java.util.UUID; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.LinkedBlockingQueue; +import mage.view.RoomView; +import org.mage.network.model.RoomMessage; +import org.mage.network.model.RoomRequest; + + +/** + * + * @author BetaSteward + */ +public class RoomMessageHandler extends SimpleChannelInboundHandler { + + private ChannelHandlerContext ctx; + private final BlockingQueue queue = new LinkedBlockingQueue<>(); + + @Override + public void channelActive(ChannelHandlerContext ctx) throws Exception { + this.ctx = ctx; + super.channelActive(ctx); + } + + @Override + protected void messageReceived(ChannelHandlerContext ctx, RoomMessage msg) throws Exception { + queue.offer(msg.getRoom()); + } + + public RoomView getRoom(UUID roomId) throws Exception { + ctx.writeAndFlush(new RoomRequest(roomId)); + return queue.take(); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/handlers/server/RoomMessageHandler.java b/Mage.Network/src/main/java/org/mage/network/handlers/server/RoomMessageHandler.java new file mode 100644 index 00000000000..7aeaa108c2d --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/handlers/server/RoomMessageHandler.java @@ -0,0 +1,41 @@ +package org.mage.network.handlers.server; + +import io.netty.channel.ChannelHandler.Sharable; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.SimpleChannelInboundHandler; +import org.mage.network.interfaces.MageServer; +import org.mage.network.model.ServerMessagesMessage; +import org.mage.network.model.ServerMessagesRequest; +import org.mage.network.model.RoomMessage; +import org.mage.network.model.RoomRequest; + +/** + * + * @author BetaSteward + */ +@Sharable +public class RoomMessageHandler extends SimpleChannelInboundHandler { + + private final MageServer server; + + public RoomMessageHandler (MageServer server) { + this.server = server; + } + + @Override + public void messageReceived(ChannelHandlerContext ctx, RoomRequest msg) { + ctx.writeAndFlush(new RoomMessage(server.getRoom(msg.getRoomId()))); + } + + @Override + public void channelReadComplete(ChannelHandlerContext ctx) { + ctx.flush(); + } + + + @Override + public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { + cause.printStackTrace(); + ctx.close(); + } +} diff --git a/Mage.Network/src/main/java/org/mage/network/interfaces/MageServer.java b/Mage.Network/src/main/java/org/mage/network/interfaces/MageServer.java index 59389586fe0..7c199d25814 100644 --- a/Mage.Network/src/main/java/org/mage/network/interfaces/MageServer.java +++ b/Mage.Network/src/main/java/org/mage/network/interfaces/MageServer.java @@ -5,6 +5,7 @@ import java.util.UUID; import mage.interfaces.ServerState; import mage.remote.DisconnectReason; import mage.utils.MageVersion; +import mage.view.RoomView; /** * @@ -23,6 +24,7 @@ public interface MageServer { ServerState getServerState(); - public List getServerMessages(); + List getServerMessages(); + RoomView getRoom(UUID roomId); } diff --git a/Mage.Network/src/main/java/org/mage/network/model/RoomMessage.java b/Mage.Network/src/main/java/org/mage/network/model/RoomMessage.java new file mode 100644 index 00000000000..41f23333a26 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/model/RoomMessage.java @@ -0,0 +1,22 @@ +package org.mage.network.model; + +import java.io.Serializable; +import mage.view.RoomView; + +/** + * + * @author BetaSteward + */ +public class RoomMessage implements Serializable { + + private RoomView room; + + public RoomMessage(RoomView room) { + this.room = room; + } + + public RoomView getRoom() { + return room; + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/model/RoomRequest.java b/Mage.Network/src/main/java/org/mage/network/model/RoomRequest.java new file mode 100644 index 00000000000..4440baaeed6 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/model/RoomRequest.java @@ -0,0 +1,22 @@ +package org.mage.network.model; + +import java.io.Serializable; +import java.util.UUID; + +/** + * + * @author BetaSteward + */ +public class RoomRequest implements Serializable { + + private UUID roomId; + + public RoomRequest(UUID roomId) { + this.roomId = roomId; + } + + public UUID getRoomId() { + return roomId; + } + +} diff --git a/Mage.Server/src/main/java/mage/server/Main.java b/Mage.Server/src/main/java/mage/server/Main.java index e269ffa5d01..a98950bd5d6 100644 --- a/Mage.Server/src/main/java/mage/server/Main.java +++ b/Mage.Server/src/main/java/mage/server/Main.java @@ -94,6 +94,7 @@ import mage.view.DraftPickView; import mage.view.GameView; import mage.view.MatchView; import mage.view.RoomUsersView; +import mage.view.RoomView; import mage.view.TableView; import mage.view.TournamentView; import mage.view.UserDataView; @@ -419,22 +420,22 @@ public class Main implements MageServer { // }); // } // -// @Override -// //FIXME: why no sessionId here??? -// public List getTables(UUID roomId) throws MageException { + @Override + //FIXME: why no sessionId here??? + public RoomView getRoom(UUID roomId) { // try { -// GamesRoom room = GamesRoomManager.getInstance().getRoom(roomId); -// if (room != null) { -// return room.getTables(); -// } else { -// return null; -// } + GamesRoom room = GamesRoomManager.getInstance().getRoom(roomId); + if (room != null) { + return new RoomView(room.getRoomUsersInfo(), room.getTables(), room.getFinished()); + } else { + return null; + } // } // catch (Exception ex) { // handleException(ex); // } // return null; -// } + } // // @Override // //FIXME: why no sessionId here??? diff --git a/Mage.Server/src/main/java/mage/server/game/GamesRoom.java b/Mage.Server/src/main/java/mage/server/game/GamesRoom.java index 1466c542f81..949a3ca352c 100644 --- a/Mage.Server/src/main/java/mage/server/game/GamesRoom.java +++ b/Mage.Server/src/main/java/mage/server/game/GamesRoom.java @@ -48,7 +48,7 @@ public interface GamesRoom extends Room { List getTables(); List getFinished(); - List getRoomUsersInfo(); + RoomUsersView getRoomUsersInfo(); boolean joinTable(UUID userId, UUID tableId, String name, String playerType, int skill, DeckCardLists deckList, String password) throws MageException; boolean joinTournamentTable(UUID userId, UUID tableId, String name, String playerType, int skill, DeckCardLists deckList, String password) throws GameException; TableView createTable(UUID userId, MatchOptions options); diff --git a/Mage.Server/src/main/java/mage/server/game/GamesRoomImpl.java b/Mage.Server/src/main/java/mage/server/game/GamesRoomImpl.java index 5ce4d40e853..d434343a869 100644 --- a/Mage.Server/src/main/java/mage/server/game/GamesRoomImpl.java +++ b/Mage.Server/src/main/java/mage/server/game/GamesRoomImpl.java @@ -69,7 +69,7 @@ public class GamesRoomImpl extends RoomImpl implements GamesRoom, Serializable { private static final ScheduledExecutorService updateExecutor = Executors.newSingleThreadScheduledExecutor(); private static List tableView = new ArrayList<>(); private static List matchView = new ArrayList<>(); - private static List roomUsersView = new ArrayList<>(); + private static RoomUsersView roomUsersView; private final ConcurrentHashMap tables = new ConcurrentHashMap<>(); @@ -128,13 +128,13 @@ public class GamesRoomImpl extends RoomImpl implements GamesRoom, Serializable { } Collections.sort(users, new UserNameSorter()); - List roomUserInfo = new ArrayList<>(); - roomUserInfo.add(new RoomUsersView(users, +// List roomUserInfo = new ArrayList<>(); + roomUsersView = new RoomUsersView(users, GameManager.getInstance().getNumberActiveGames(), ThreadExecutor.getInstance().getActiveThreads(ThreadExecutor.getInstance().getGameExecutor()), ConfigSettings.getInstance().getMaxGameThreads() - )); - roomUsersView = roomUserInfo; + ); +// roomUsersView = roomUserInfo; } @Override @@ -210,7 +210,7 @@ public class GamesRoomImpl extends RoomImpl implements GamesRoom, Serializable { } @Override - public List getRoomUsersInfo() { + public RoomUsersView getRoomUsersInfo() { return roomUsersView; }