simplified client message handling

This commit is contained in:
betasteward 2015-06-15 14:27:58 -04:00
parent a241556fdc
commit dd8fe2d05c
26 changed files with 232 additions and 552 deletions

View file

@ -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<String> 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);
}

View file

@ -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<ChatMessageMessage> {
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());
}
}

View file

@ -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<ChatRoomIdMessage> {
private ChannelHandlerContext ctx;
private final BlockingQueue<UUID> 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());
}
}

View file

@ -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<ClientMessage> {
private final MageClient client;
private ChannelHandlerContext ctx;
private final BlockingQueue<Boolean> booleanQueue = new LinkedBlockingQueue<>();
private final BlockingQueue<UUID> uuidQueue = new LinkedBlockingQueue<>();
private final BlockingQueue<RoomView> roomViewQueue = new LinkedBlockingQueue<>();
private final BlockingQueue<TableView> tableViewQueue = new LinkedBlockingQueue<>();
private final BlockingQueue<List<String>> 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<String> 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<String> list) {
stringListQueue.offer(list);
}
}

View file

@ -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);
// }
}

View file

@ -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<InformClientMessage> {
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());
}
}

View file

@ -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<JoinTableMessage> {
private ChannelHandlerContext ctx;
private final BlockingQueue<Boolean> 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();
}
}

View file

@ -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<JoinedTableMessage> {
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());
}
}

View file

@ -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<LeftTableMessage> {
private ChannelHandlerContext ctx;
private final BlockingQueue<Boolean> 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();
}
}

View file

@ -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<RoomMessage> {
private ChannelHandlerContext ctx;
private final BlockingQueue<RoomView> 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();
}
}

View file

@ -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<ServerMessagesMessage> {
private ChannelHandlerContext ctx;
private final BlockingQueue<List<String>> 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<String> getServerMessages() throws Exception {
queue.clear();
ctx.writeAndFlush(new ServerMessagesRequest()).addListener(WriteListener.getInstance());
return queue.take();
}
}

View file

@ -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<CreateTableMessage> {
private ChannelHandlerContext ctx;
private final BlockingQueue<TableView> 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());
}
}

View file

@ -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<TableWaitingMessage> {
private ChannelHandlerContext ctx;
private final BlockingQueue<TableView> 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();
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -1,6 +1,5 @@
package org.mage.network.model;
import java.io.Serializable;
import java.util.UUID;
import mage.cards.decks.DeckCardLists;

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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<String> messages;
@ -15,8 +15,9 @@ public class ServerMessagesMessage implements Serializable {
this.messages = messages;
}
public List<String> getMessages() {
return messages;
@Override
public void handleMessage(ClientMessageHandler handler) {
handler.receiveStringList(messages);
}
}

View file

@ -1,6 +1,5 @@
package org.mage.network.model;
import java.io.Serializable;
import java.util.UUID;
/**

View file

@ -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);
}
}