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 e4827dfc750..759f9c3e6d8 100644 --- a/Mage.Network/src/main/java/org/mage/network/Client.java +++ b/Mage.Network/src/main/java/org/mage/network/Client.java @@ -33,20 +33,11 @@ import mage.view.TournamentView; import mage.view.UserView; import org.apache.log4j.Logger; import org.mage.network.handlers.ExceptionHandler; +import org.mage.network.handlers.MessageHandler; import org.mage.network.handlers.client.HeartbeatHandler; import org.mage.network.handlers.PingMessageHandler; -import org.mage.network.handlers.client.ChatMessageHandler; -import org.mage.network.handlers.client.ChatRoomHandler; +import org.mage.network.handlers.client.ClientMessageHandler; import org.mage.network.handlers.client.ClientRegisteredMessageHandler; -import org.mage.network.handlers.client.ConnectionHandler; -import org.mage.network.handlers.client.InformClientMessageHandler; -import org.mage.network.handlers.client.JoinTableMessageHandler; -import org.mage.network.handlers.client.JoinedTableMessageHandler; -import org.mage.network.handlers.client.LeaveTableMessageHandler; -import org.mage.network.handlers.client.ServerMessageHandler; -import org.mage.network.handlers.client.RoomMessageHandler; -import org.mage.network.handlers.client.TableMessageHandler; -import org.mage.network.handlers.client.TableWaitingMessageHandler; import org.mage.network.interfaces.MageClient; import org.mage.network.model.MessageType; @@ -63,18 +54,8 @@ public class Client { private final MageClient client; // private final MessageHandler h; - private final ConnectionHandler connectionHandler; - private final ChatRoomHandler chatRoomHandler; - private final ChatMessageHandler chatMessageHandler; - private final InformClientMessageHandler informClientMessageHandler; + private final ClientMessageHandler clientMessageHandler; private final ClientRegisteredMessageHandler clientRegisteredMessageHandler; - private final ServerMessageHandler serverMessageHandler; - private final RoomMessageHandler roomMessageHandler; - private final TableMessageHandler tableMessageHandler; - private final JoinTableMessageHandler joinTableMessageHandler; - private final JoinedTableMessageHandler joinedTableMessageHandler; - private final TableWaitingMessageHandler tableWaitingMessageHandler; - private final LeaveTableMessageHandler leaveTableMessageHandler; private final ExceptionHandler exceptionHandler; @@ -88,18 +69,8 @@ public class Client { public Client(MageClient client) { this.client = client; // h = new MessageHandler(); - connectionHandler = new ConnectionHandler(client); - chatRoomHandler = new ChatRoomHandler(); - chatMessageHandler = new ChatMessageHandler(client); - informClientMessageHandler = new InformClientMessageHandler(client); + clientMessageHandler = new ClientMessageHandler(client); clientRegisteredMessageHandler = new ClientRegisteredMessageHandler(); - serverMessageHandler = new ServerMessageHandler(); - roomMessageHandler = new RoomMessageHandler(); - tableMessageHandler = new TableMessageHandler(); - joinTableMessageHandler = new JoinTableMessageHandler(); - joinedTableMessageHandler = new JoinedTableMessageHandler(client); - tableWaitingMessageHandler = new TableWaitingMessageHandler(); - leaveTableMessageHandler = new LeaveTableMessageHandler(); exceptionHandler = new ExceptionHandler(); } @@ -153,23 +124,13 @@ public class Client { ch.pipeline().addLast(new ObjectDecoder(ClassResolvers.cacheDisabled(null))); ch.pipeline().addLast(new ObjectEncoder()); - ch.pipeline().addLast("connectionHandler", connectionHandler); ch.pipeline().addLast("idleStateHandler", new IdleStateHandler(IDLE_TIMEOUT, IDLE_PING_TIME, 0)); ch.pipeline().addLast("heartbeatHandler", new HeartbeatHandler()); ch.pipeline().addLast("pingMessageHandler", new PingMessageHandler()); // ch.pipeline().addLast("h", h); - ch.pipeline().addLast("chatMessageHandler", chatMessageHandler); - ch.pipeline().addLast("informClientMessageHandler", informClientMessageHandler); ch.pipeline().addLast("clientRegisteredMessageHandler", clientRegisteredMessageHandler); - ch.pipeline().addLast("chatRoomHandler", chatRoomHandler); - ch.pipeline().addLast("serverMessageHandler", serverMessageHandler); - ch.pipeline().addLast("roomMessageHandler", roomMessageHandler); - ch.pipeline().addLast("tableMessageHandler", tableMessageHandler); - ch.pipeline().addLast("joinTableMessageHandler", joinTableMessageHandler); - ch.pipeline().addLast("joinedTableMessageHandler", joinedTableMessageHandler); - ch.pipeline().addLast("tableWaitingMessageHandler", tableWaitingMessageHandler); - ch.pipeline().addLast("leaveTableMessageHandler", leaveTableMessageHandler); + ch.pipeline().addLast("clientMessageHandler", clientMessageHandler); ch.pipeline().addLast("exceptionHandler", exceptionHandler); } @@ -194,15 +155,15 @@ public class Client { } public void sendChatMessage(UUID chatId, String message) { - chatMessageHandler.sendMessage(chatId, message); + clientMessageHandler.sendMessage(chatId, message); } public void joinChat(UUID chatId) { - chatRoomHandler.joinChat(chatId); + clientMessageHandler.joinChat(chatId); } public void leaveChat(UUID chatId) { - chatRoomHandler.leaveChat(chatId); + clientMessageHandler.leaveChat(chatId); } public void sendPlayerUUID(UUID gameId, UUID id) { @@ -239,7 +200,7 @@ public class Client { public boolean joinTable(UUID roomId, UUID tableId, String playerName, String playerType, int skill, DeckCardLists deck, String password) { try { - return joinTableMessageHandler.joinTable(roomId, tableId, playerName, playerType, skill, deck, password); + return clientMessageHandler.joinTable(roomId, tableId, playerName, playerType, skill, deck, password); } catch (Exception ex) { logger.error("Error creating table", ex); } @@ -248,7 +209,7 @@ public class Client { public TableView createTable(UUID roomId, MatchOptions options) { try { - return tableMessageHandler.createTable(roomId, options); + return clientMessageHandler.createTable(roomId, options); } catch (Exception ex) { logger.error("Error creating table", ex); } @@ -257,7 +218,7 @@ public class Client { public void removeTable(UUID roomId, UUID tableId) { try { - tableMessageHandler.removeTable(roomId, tableId); + clientMessageHandler.removeTable(roomId, tableId); } catch (Exception ex) { logger.error("Error removing table", ex); } @@ -275,14 +236,6 @@ public class Client { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } -// public boolean isTableOwner(UUID roomId, UUID tableId) { -// throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. -// } - -// public UUID getTableChatId(UUID tableId) { -// throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. -// } - public boolean startMatch(UUID roomId, UUID tableId) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } @@ -293,7 +246,7 @@ public class Client { public boolean leaveTable(UUID roomId, UUID tableId) { try { - return leaveTableMessageHandler.leaveTable(roomId, tableId); + return clientMessageHandler.leaveTable(roomId, tableId); } catch (Exception ex) { logger.error("Error leaving table", ex); } @@ -302,7 +255,7 @@ public class Client { public void swapSeats(UUID roomId, UUID tableId, int seatNum1, int seatNum2) { try { - tableMessageHandler.swapSeats(roomId, tableId, seatNum1, seatNum2); + clientMessageHandler.swapSeats(roomId, tableId, seatNum1, seatNum2); } catch (Exception ex) { logger.error("Error swaping seats", ex); } @@ -314,7 +267,7 @@ public class Client { public TableView getTable(UUID roomId, UUID tableId) { try { - return tableWaitingMessageHandler.getTable(roomId, tableId); + return clientMessageHandler.getTable(roomId, tableId); } catch (Exception ex) { logger.error("Error getting chat room id", ex); } @@ -355,7 +308,7 @@ public class Client { public UUID getRoomChatId(UUID roomId) { try { - return chatRoomHandler.getChatRoomId(roomId); + return clientMessageHandler.getChatRoomId(roomId); } catch (Exception ex) { logger.error("Error getting chat room id", ex); } @@ -364,7 +317,7 @@ public class Client { public List getServerMessages() { try { - return serverMessageHandler.getServerMessages(); + return clientMessageHandler.getServerMessages(); } catch (Exception ex) { logger.error("Error getting server messages", ex); } @@ -373,7 +326,7 @@ public class Client { public RoomView getRoom(UUID roomId) { try { - return roomMessageHandler.getRoom(roomId); + return clientMessageHandler.getRoom(roomId); } catch (Exception ex) { logger.error("Error getting tables", ex); } diff --git a/Mage.Network/src/main/java/org/mage/network/handlers/client/ChatMessageHandler.java b/Mage.Network/src/main/java/org/mage/network/handlers/client/ChatMessageHandler.java deleted file mode 100644 index 4506c4ca4ed..00000000000 --- a/Mage.Network/src/main/java/org/mage/network/handlers/client/ChatMessageHandler.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.mage.network.handlers.client; - -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.SimpleChannelInboundHandler; -import java.util.UUID; -import org.mage.network.handlers.WriteListener; -import org.mage.network.interfaces.MageClient; -import org.mage.network.model.ChatMessageMessage; -import org.mage.network.model.ChatMessageRequest; - -/** - * - * @author BetaSteward - */ -public class ChatMessageHandler extends SimpleChannelInboundHandler { - - private final MageClient client; - private ChannelHandlerContext ctx; - - public ChatMessageHandler (MageClient client) { - this.client = client; - } - - @Override - public void channelActive(ChannelHandlerContext ctx) throws Exception { - this.ctx = ctx; - super.channelActive(ctx); - } - - @Override - protected void messageReceived(ChannelHandlerContext ctx, ChatMessageMessage msg) throws Exception { - client.receiveChatMessage(msg.getChatId(), msg.getMessage()); - } - - public void sendMessage(UUID chatId, String message) { - ctx.writeAndFlush(new ChatMessageRequest(chatId, message)).addListener(WriteListener.getInstance()); - } -} diff --git a/Mage.Network/src/main/java/org/mage/network/handlers/client/ChatRoomHandler.java b/Mage.Network/src/main/java/org/mage/network/handlers/client/ChatRoomHandler.java deleted file mode 100644 index 8e4ca69e793..00000000000 --- a/Mage.Network/src/main/java/org/mage/network/handlers/client/ChatRoomHandler.java +++ /dev/null @@ -1,48 +0,0 @@ -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 org.mage.network.handlers.WriteListener; -import org.mage.network.model.ChatRoomIdMessage; -import org.mage.network.model.ChatRoomIdRequest; -import org.mage.network.model.JoinChatRequest; -import org.mage.network.model.LeaveChatRequest; - -/** - * - * @author BetaSteward - */ -public class ChatRoomHandler 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 - public void messageReceived(ChannelHandlerContext ctx, ChatRoomIdMessage msg) { - queue.offer(msg.getId()); - } - - public UUID getChatRoomId(UUID roomId) throws Exception { - queue.clear(); - ctx.writeAndFlush(new ChatRoomIdRequest(roomId)).addListener(WriteListener.getInstance()); - return queue.take(); - } - - public void joinChat(UUID chatId) { - ctx.writeAndFlush(new JoinChatRequest(chatId)).addListener(WriteListener.getInstance()); - } - - public void leaveChat(UUID chatId) { - ctx.writeAndFlush(new LeaveChatRequest(chatId)).addListener(WriteListener.getInstance()); - } - -} diff --git a/Mage.Network/src/main/java/org/mage/network/handlers/client/ClientMessageHandler.java b/Mage.Network/src/main/java/org/mage/network/handlers/client/ClientMessageHandler.java new file mode 100644 index 00000000000..3b4991f3fc7 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/handlers/client/ClientMessageHandler.java @@ -0,0 +1,144 @@ +package org.mage.network.handlers.client; + +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.SimpleChannelInboundHandler; +import java.util.List; +import java.util.UUID; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.LinkedBlockingQueue; +import mage.cards.decks.DeckCardLists; +import mage.game.match.MatchOptions; +import mage.view.RoomView; +import mage.view.TableView; +import org.mage.network.handlers.WriteListener; +import org.mage.network.interfaces.MageClient; +import org.mage.network.model.ChatMessageRequest; +import org.mage.network.model.ChatRoomIdRequest; +import org.mage.network.model.ClientMessage; +import org.mage.network.model.CreateTableRequest; +import org.mage.network.model.GetRoomRequest; +import org.mage.network.model.JoinChatRequest; +import org.mage.network.model.JoinTableRequest; +import org.mage.network.model.LeaveChatRequest; +import org.mage.network.model.LeaveTableRequest; +import org.mage.network.model.RemoveTableRequest; +import org.mage.network.model.ServerMessagesRequest; +import org.mage.network.model.SwapSeatRequest; +import org.mage.network.model.TableWaitingRequest; + +/** + * + * @author BetaSteward + */ +public class ClientMessageHandler extends SimpleChannelInboundHandler { + + private final MageClient client; + private ChannelHandlerContext ctx; + private final BlockingQueue booleanQueue = new LinkedBlockingQueue<>(); + private final BlockingQueue uuidQueue = new LinkedBlockingQueue<>(); + private final BlockingQueue roomViewQueue = new LinkedBlockingQueue<>(); + private final BlockingQueue tableViewQueue = new LinkedBlockingQueue<>(); + private final BlockingQueue> stringListQueue = new LinkedBlockingQueue<>(); + + public ClientMessageHandler (MageClient client) { + this.client = client; + } + + @Override + public void channelActive(ChannelHandlerContext ctx) throws Exception { + this.ctx = ctx; + super.channelActive(ctx); + } + + @Override + public void messageReceived(ChannelHandlerContext ctx, ClientMessage msg) { + msg.handleMessage(this); + } + + public List getServerMessages() throws Exception { + stringListQueue.clear(); + ctx.writeAndFlush(new ServerMessagesRequest()).addListener(WriteListener.getInstance()); + return stringListQueue.take(); + } + + public UUID getChatRoomId(UUID roomId) throws Exception { + uuidQueue.clear(); + ctx.writeAndFlush(new ChatRoomIdRequest(roomId)).addListener(WriteListener.getInstance()); + return uuidQueue.take(); + } + + public RoomView getRoom(UUID roomId) throws Exception { + roomViewQueue.clear(); + ctx.writeAndFlush(new GetRoomRequest(roomId)).addListener(WriteListener.getInstance()); + return roomViewQueue.take(); + } + + public TableView createTable(UUID roomId, MatchOptions options) throws Exception { + tableViewQueue.clear(); + ctx.writeAndFlush(new CreateTableRequest(roomId, options)).addListener(WriteListener.getInstance()); + return tableViewQueue.take(); + } + + public TableView getTable(UUID roomId, UUID tableId) throws Exception { + tableViewQueue.clear(); + ctx.writeAndFlush(new TableWaitingRequest(roomId, tableId)).addListener(WriteListener.getInstance()); + return tableViewQueue.take(); + } + + public boolean joinTable(UUID roomId, UUID tableId, String name, String playerType, int skill, DeckCardLists deckList, String password) throws Exception { + booleanQueue.clear(); + ctx.writeAndFlush(new JoinTableRequest(roomId, tableId, name, playerType, skill, deckList, password)).addListener(WriteListener.getInstance()); + return booleanQueue.take(); + } + + public boolean leaveTable(UUID roomId, UUID tableId) throws Exception { + booleanQueue.clear(); + ctx.writeAndFlush(new LeaveTableRequest(roomId, tableId)).addListener(WriteListener.getInstance()); + return booleanQueue.take(); + } + + public void joinChat(UUID chatId) { + ctx.writeAndFlush(new JoinChatRequest(chatId)).addListener(WriteListener.getInstance()); + } + + public void leaveChat(UUID chatId) { + ctx.writeAndFlush(new LeaveChatRequest(chatId)).addListener(WriteListener.getInstance()); + } + + public void sendMessage(UUID chatId, String message) { + ctx.writeAndFlush(new ChatMessageRequest(chatId, message)).addListener(WriteListener.getInstance()); + } + + public void removeTable(UUID roomId, UUID tableId) throws Exception { + ctx.writeAndFlush(new RemoveTableRequest(roomId, tableId)).addListener(WriteListener.getInstance()); + } + + public void swapSeats(UUID roomId, UUID tableId, int seatNum1, int seatNum2) throws Exception { + ctx.writeAndFlush(new SwapSeatRequest(roomId, tableId, seatNum1, seatNum2)).addListener(WriteListener.getInstance()); + } + + public MageClient getClient() { + return client; + } + + public void receiveBoolean(boolean b) { + booleanQueue.offer(b); + } + + public void receiveId(UUID id) { + uuidQueue.offer(id); + } + + public void receiveRoomView(RoomView view) { + roomViewQueue.offer(view); + } + + public void receiveTableView(TableView view) { + tableViewQueue.offer(view); + } + + public void receiveStringList(List list) { + stringListQueue.offer(list); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/handlers/client/ConnectionHandler.java b/Mage.Network/src/main/java/org/mage/network/handlers/client/ConnectionHandler.java deleted file mode 100644 index 00c11cd9fed..00000000000 --- a/Mage.Network/src/main/java/org/mage/network/handlers/client/ConnectionHandler.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.mage.network.handlers.client; - -import io.netty.channel.ChannelHandlerAdapter; -import io.netty.channel.ChannelHandlerContext; -import org.apache.log4j.Logger; -import org.mage.network.interfaces.MageClient; - -/** - * - * @author BetaSteward - */ -public class ConnectionHandler extends ChannelHandlerAdapter { - - private static final Logger logger = Logger.getLogger(ConnectionHandler.class); - private final MageClient client; - - public ConnectionHandler (MageClient client) { - this.client = client; - } - -// @Override -// public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { -// logger.error("Connection error", cause); -// client.disconnected(true); -// } - -} \ No newline at end of file diff --git a/Mage.Network/src/main/java/org/mage/network/handlers/client/InformClientMessageHandler.java b/Mage.Network/src/main/java/org/mage/network/handlers/client/InformClientMessageHandler.java deleted file mode 100644 index 03e8523307a..00000000000 --- a/Mage.Network/src/main/java/org/mage/network/handlers/client/InformClientMessageHandler.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.mage.network.handlers.client; - -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.SimpleChannelInboundHandler; -import org.mage.network.interfaces.MageClient; -import org.mage.network.model.InformClientMessage; - -/** - * - * @author BetaSteward - */ -public class InformClientMessageHandler extends SimpleChannelInboundHandler { - - private final MageClient client; - - public InformClientMessageHandler (MageClient client) { - this.client = client; - } - - @Override - protected void messageReceived(ChannelHandlerContext ctx, InformClientMessage msg) throws Exception { - client.inform(msg.getTitle(), msg.getMessage(), msg.getType()); - } - -} diff --git a/Mage.Network/src/main/java/org/mage/network/handlers/client/JoinTableMessageHandler.java b/Mage.Network/src/main/java/org/mage/network/handlers/client/JoinTableMessageHandler.java deleted file mode 100644 index f9bd8cfe073..00000000000 --- a/Mage.Network/src/main/java/org/mage/network/handlers/client/JoinTableMessageHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -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.cards.decks.DeckCardLists; -import org.mage.network.handlers.WriteListener; -import org.mage.network.model.JoinTableMessage; -import org.mage.network.model.JoinTableRequest; - - -/** - * - * @author BetaSteward - */ -public class JoinTableMessageHandler 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, JoinTableMessage msg) throws Exception { - queue.offer(msg.getSuccess()); - } - - public boolean joinTable(UUID roomId, UUID tableId, String name, String playerType, int skill, DeckCardLists deckList, String password) throws Exception { - queue.clear(); - ctx.writeAndFlush(new JoinTableRequest(roomId, tableId, name, playerType, skill, deckList, password)).addListener(WriteListener.getInstance()); - return queue.take(); - } - -} diff --git a/Mage.Network/src/main/java/org/mage/network/handlers/client/JoinedTableMessageHandler.java b/Mage.Network/src/main/java/org/mage/network/handlers/client/JoinedTableMessageHandler.java deleted file mode 100644 index 6a532cef419..00000000000 --- a/Mage.Network/src/main/java/org/mage/network/handlers/client/JoinedTableMessageHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.mage.network.handlers.client; - -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.SimpleChannelInboundHandler; -import org.mage.network.interfaces.MageClient; -import org.mage.network.model.JoinedTableMessage; - - -/** - * - * @author BetaSteward - */ -public class JoinedTableMessageHandler extends SimpleChannelInboundHandler { - - - private final MageClient client; - - public JoinedTableMessageHandler (MageClient client) { - this.client = client; - } - - @Override - protected void messageReceived(ChannelHandlerContext ctx, JoinedTableMessage msg) throws Exception { - client.joinedTable(msg.getRoomId(), msg.getTableId(), msg.getChatId(), msg.isOwner(), msg.isTournament()); - } - - -} diff --git a/Mage.Network/src/main/java/org/mage/network/handlers/client/LeaveTableMessageHandler.java b/Mage.Network/src/main/java/org/mage/network/handlers/client/LeaveTableMessageHandler.java deleted file mode 100644 index 922cf2a2f11..00000000000 --- a/Mage.Network/src/main/java/org/mage/network/handlers/client/LeaveTableMessageHandler.java +++ /dev/null @@ -1,39 +0,0 @@ -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 org.mage.network.handlers.WriteListener; -import org.mage.network.model.LeaveTableRequest; -import org.mage.network.model.LeftTableMessage; - - -/** - * - * @author BetaSteward - */ -public class LeaveTableMessageHandler 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, LeftTableMessage msg) throws Exception { - queue.offer(msg.getSuccess()); - } - - public boolean leaveTable(UUID roomId, UUID tableId) throws Exception { - queue.clear(); - ctx.writeAndFlush(new LeaveTableRequest(roomId, tableId)).addListener(WriteListener.getInstance()); - return queue.take(); - } - -} 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 deleted file mode 100644 index 591afe95c88..00000000000 --- a/Mage.Network/src/main/java/org/mage/network/handlers/client/RoomMessageHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -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.handlers.WriteListener; -import org.mage.network.model.GetRoomRequest; -import org.mage.network.model.RoomMessage; - - -/** - * - * @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 { - queue.clear(); - ctx.writeAndFlush(new GetRoomRequest(roomId)).addListener(WriteListener.getInstance()); - return queue.take(); - } - -} diff --git a/Mage.Network/src/main/java/org/mage/network/handlers/client/ServerMessageHandler.java b/Mage.Network/src/main/java/org/mage/network/handlers/client/ServerMessageHandler.java deleted file mode 100644 index 7510adf7b0f..00000000000 --- a/Mage.Network/src/main/java/org/mage/network/handlers/client/ServerMessageHandler.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.mage.network.handlers.client; - -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.SimpleChannelInboundHandler; -import java.util.List; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.LinkedBlockingQueue; -import org.mage.network.handlers.WriteListener; -import org.mage.network.model.ServerMessagesMessage; -import org.mage.network.model.ServerMessagesRequest; - - -/** - * - * @author BetaSteward - */ -public class ServerMessageHandler 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, ServerMessagesMessage msg) throws Exception { - queue.offer(msg.getMessages()); - } - - public List getServerMessages() throws Exception { - queue.clear(); - ctx.writeAndFlush(new ServerMessagesRequest()).addListener(WriteListener.getInstance()); - return queue.take(); - } - -} diff --git a/Mage.Network/src/main/java/org/mage/network/handlers/client/TableMessageHandler.java b/Mage.Network/src/main/java/org/mage/network/handlers/client/TableMessageHandler.java deleted file mode 100644 index 25a68abec39..00000000000 --- a/Mage.Network/src/main/java/org/mage/network/handlers/client/TableMessageHandler.java +++ /dev/null @@ -1,51 +0,0 @@ -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.game.match.MatchOptions; -import mage.view.TableView; -import org.mage.network.handlers.WriteListener; -import org.mage.network.model.CreateTableMessage; -import org.mage.network.model.CreateTableRequest; -import org.mage.network.model.RemoveTableRequest; -import org.mage.network.model.SwapSeatRequest; - - -/** - * - * @author BetaSteward - */ -public class TableMessageHandler 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, CreateTableMessage msg) throws Exception { - queue.offer(msg.getTable()); - } - - public TableView createTable(UUID roomId, MatchOptions options) throws Exception { - queue.clear(); - ctx.writeAndFlush(new CreateTableRequest(roomId, options)).addListener(WriteListener.getInstance()); - return queue.take(); - } - - public void removeTable(UUID roomId, UUID tableId) throws Exception { - ctx.writeAndFlush(new RemoveTableRequest(roomId, tableId)).addListener(WriteListener.getInstance()); - } - - public void swapSeats(UUID roomId, UUID tableId, int seatNum1, int seatNum2) throws Exception { - ctx.writeAndFlush(new SwapSeatRequest(roomId, tableId, seatNum1, seatNum2)).addListener(WriteListener.getInstance()); - } - -} diff --git a/Mage.Network/src/main/java/org/mage/network/handlers/client/TableWaitingMessageHandler.java b/Mage.Network/src/main/java/org/mage/network/handlers/client/TableWaitingMessageHandler.java deleted file mode 100644 index c7f6fe15511..00000000000 --- a/Mage.Network/src/main/java/org/mage/network/handlers/client/TableWaitingMessageHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -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.TableView; -import org.mage.network.handlers.WriteListener; -import org.mage.network.model.TableWaitingMessage; -import org.mage.network.model.TableWaitingRequest; - - -/** - * - * @author BetaSteward - */ -public class TableWaitingMessageHandler 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, TableWaitingMessage msg) throws Exception { - queue.offer(msg.getRoom()); - } - - public TableView getTable(UUID roomId, UUID tableId) throws Exception { - queue.clear(); - ctx.writeAndFlush(new TableWaitingRequest(roomId, tableId)).addListener(WriteListener.getInstance()); - return queue.take(); - } - -} diff --git a/Mage.Network/src/main/java/org/mage/network/model/ChatMessageMessage.java b/Mage.Network/src/main/java/org/mage/network/model/ChatMessageMessage.java index 7fc20e8f28b..e5da5bd86ce 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/ChatMessageMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/model/ChatMessageMessage.java @@ -1,14 +1,14 @@ package org.mage.network.model; -import java.io.Serializable; import java.util.UUID; import mage.view.ChatMessage; +import org.mage.network.handlers.client.ClientMessageHandler; /** * * @author BetaSteward */ -public class ChatMessageMessage implements Serializable { +public class ChatMessageMessage extends ClientMessage { private UUID chatId; private ChatMessage message; @@ -17,13 +17,10 @@ public class ChatMessageMessage implements Serializable { this.chatId = chatId; this.message = message; } - - public UUID getChatId() { - return chatId; - } - public ChatMessage getMessage() { - return message; + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.getClient().receiveChatMessage(chatId, message); } } diff --git a/Mage.Network/src/main/java/org/mage/network/model/ChatRoomIdMessage.java b/Mage.Network/src/main/java/org/mage/network/model/ChatRoomIdMessage.java index b7afba6615e..13819e8b5a9 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/ChatRoomIdMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/model/ChatRoomIdMessage.java @@ -1,22 +1,23 @@ package org.mage.network.model; -import java.io.Serializable; import java.util.UUID; +import org.mage.network.handlers.client.ClientMessageHandler; /** * * @author BetaSteward */ -public class ChatRoomIdMessage implements Serializable { +public class ChatRoomIdMessage extends ClientMessage { - private UUID id; + private UUID chatId; - public ChatRoomIdMessage(UUID id) { - this.id = id; + public ChatRoomIdMessage(UUID chatId) { + this.chatId = chatId; } - - public UUID getId() { - return id; + + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.receiveId(chatId); } - + } \ No newline at end of file diff --git a/Mage.Network/src/main/java/org/mage/network/model/ClientMessage.java b/Mage.Network/src/main/java/org/mage/network/model/ClientMessage.java new file mode 100644 index 00000000000..d57e7939a12 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/model/ClientMessage.java @@ -0,0 +1,14 @@ +package org.mage.network.model; + +import java.io.Serializable; +import org.mage.network.handlers.client.ClientMessageHandler; + +/** + * + * @author BetaSteward + */ +public abstract class ClientMessage implements Serializable { + + public abstract void handleMessage(ClientMessageHandler handler); + +} diff --git a/Mage.Network/src/main/java/org/mage/network/model/CreateTableMessage.java b/Mage.Network/src/main/java/org/mage/network/model/CreateTableMessage.java index e761576c7b5..69e70f2cdb9 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/CreateTableMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/model/CreateTableMessage.java @@ -1,13 +1,13 @@ package org.mage.network.model; -import java.io.Serializable; import mage.view.TableView; +import org.mage.network.handlers.client.ClientMessageHandler; /** * * @author BetaSteward */ -public class CreateTableMessage implements Serializable { +public class CreateTableMessage extends ClientMessage { private TableView table; @@ -15,8 +15,9 @@ public class CreateTableMessage implements Serializable { this.table = table; } - public TableView getTable() { - return table; + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.receiveTableView(table); } } diff --git a/Mage.Network/src/main/java/org/mage/network/model/InformClientMessage.java b/Mage.Network/src/main/java/org/mage/network/model/InformClientMessage.java index b5b7a118081..3284f36f683 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/InformClientMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/model/InformClientMessage.java @@ -1,12 +1,12 @@ package org.mage.network.model; -import java.io.Serializable; +import org.mage.network.handlers.client.ClientMessageHandler; /** * * @author BetaSteward */ -public class InformClientMessage implements Serializable { +public class InformClientMessage extends ClientMessage { private String title; private String message; @@ -18,15 +18,8 @@ public class InformClientMessage implements Serializable { this.type = type; } - public String getTitle() { - return title; - } - - public String getMessage() { - return message; - } - - public MessageType getType() { - return type; + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.getClient().inform(title, message, type); } } diff --git a/Mage.Network/src/main/java/org/mage/network/model/JoinTableMessage.java b/Mage.Network/src/main/java/org/mage/network/model/JoinTableMessage.java index 4ea7d9e1492..122e77d3bc3 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/JoinTableMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/model/JoinTableMessage.java @@ -1,12 +1,12 @@ package org.mage.network.model; -import java.io.Serializable; +import org.mage.network.handlers.client.ClientMessageHandler; /** * * @author BetaSteward */ -public class JoinTableMessage implements Serializable { +public class JoinTableMessage extends ClientMessage { private boolean success; @@ -14,8 +14,9 @@ public class JoinTableMessage implements Serializable { this.success = success; } - public boolean getSuccess() { - return success; + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.receiveBoolean(success); } } diff --git a/Mage.Network/src/main/java/org/mage/network/model/JoinTableRequest.java b/Mage.Network/src/main/java/org/mage/network/model/JoinTableRequest.java index bda4c690b43..1702dc408d3 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/JoinTableRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/model/JoinTableRequest.java @@ -1,6 +1,5 @@ package org.mage.network.model; -import java.io.Serializable; import java.util.UUID; import mage.cards.decks.DeckCardLists; diff --git a/Mage.Network/src/main/java/org/mage/network/model/JoinedTableMessage.java b/Mage.Network/src/main/java/org/mage/network/model/JoinedTableMessage.java index 4665f50def8..0217fa34efb 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/JoinedTableMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/model/JoinedTableMessage.java @@ -1,13 +1,13 @@ package org.mage.network.model; -import java.io.Serializable; import java.util.UUID; +import org.mage.network.handlers.client.ClientMessageHandler; /** * * @author BetaSteward */ -public class JoinedTableMessage implements Serializable { +public class JoinedTableMessage extends ClientMessage { private UUID roomId; private UUID tableId; @@ -23,23 +23,8 @@ public class JoinedTableMessage implements Serializable { this.tournament = tournament; } - public UUID getRoomId() { - return roomId; - } - - public UUID getTableId() { - return tableId; - } - - public UUID getChatId() { - return chatId; - } - - public boolean isOwner() { - return owner; - } - - public boolean isTournament() { - return tournament; + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.getClient().joinedTable(roomId, tableId, chatId, owner, tournament); } } diff --git a/Mage.Network/src/main/java/org/mage/network/model/LeftTableMessage.java b/Mage.Network/src/main/java/org/mage/network/model/LeftTableMessage.java index b3981b070d6..28c833afc87 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/LeftTableMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/model/LeftTableMessage.java @@ -1,12 +1,12 @@ package org.mage.network.model; -import java.io.Serializable; +import org.mage.network.handlers.client.ClientMessageHandler; /** * * @author BetaSteward */ -public class LeftTableMessage implements Serializable { +public class LeftTableMessage extends ClientMessage { private boolean success; @@ -14,8 +14,9 @@ public class LeftTableMessage implements Serializable { this.success = success; } - public boolean getSuccess() { - return success; + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.receiveBoolean(success); } } 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 index 41f23333a26..806c646d2ff 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/RoomMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/model/RoomMessage.java @@ -1,13 +1,13 @@ package org.mage.network.model; -import java.io.Serializable; import mage.view.RoomView; +import org.mage.network.handlers.client.ClientMessageHandler; /** * * @author BetaSteward */ -public class RoomMessage implements Serializable { +public class RoomMessage extends ClientMessage { private RoomView room; @@ -18,5 +18,10 @@ public class RoomMessage implements Serializable { public RoomView getRoom() { return room; } + + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.receiveRoomView(room); + } } diff --git a/Mage.Network/src/main/java/org/mage/network/model/ServerMessagesMessage.java b/Mage.Network/src/main/java/org/mage/network/model/ServerMessagesMessage.java index b57906e9bdb..5aa324e46b0 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/ServerMessagesMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/model/ServerMessagesMessage.java @@ -1,13 +1,13 @@ package org.mage.network.model; -import java.io.Serializable; import java.util.List; +import org.mage.network.handlers.client.ClientMessageHandler; /** * * @author BetaSteward */ -public class ServerMessagesMessage implements Serializable { +public class ServerMessagesMessage extends ClientMessage { private List messages; @@ -15,8 +15,9 @@ public class ServerMessagesMessage implements Serializable { this.messages = messages; } - public List getMessages() { - return messages; + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.receiveStringList(messages); } } diff --git a/Mage.Network/src/main/java/org/mage/network/model/SwapSeatRequest.java b/Mage.Network/src/main/java/org/mage/network/model/SwapSeatRequest.java index bfa5ea6b509..a4af0a09c20 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/SwapSeatRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/model/SwapSeatRequest.java @@ -1,6 +1,5 @@ package org.mage.network.model; -import java.io.Serializable; import java.util.UUID; /** diff --git a/Mage.Network/src/main/java/org/mage/network/model/TableWaitingMessage.java b/Mage.Network/src/main/java/org/mage/network/model/TableWaitingMessage.java index c945e4c5abc..9755ce56885 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/TableWaitingMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/model/TableWaitingMessage.java @@ -1,13 +1,13 @@ package org.mage.network.model; -import java.io.Serializable; import mage.view.TableView; +import org.mage.network.handlers.client.ClientMessageHandler; /** * * @author BetaSteward */ -public class TableWaitingMessage implements Serializable { +public class TableWaitingMessage extends ClientMessage { private TableView table; @@ -15,8 +15,9 @@ public class TableWaitingMessage implements Serializable { this.table = table; } - public TableView getRoom() { - return table; + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.receiveTableView(table); } }