mirror of
https://github.com/magefree/mage.git
synced 2025-12-24 04:22:01 -08:00
use same paradigm on server side - reduces the number of handlers in the pipeline
This commit is contained in:
parent
dd8fe2d05c
commit
19ad01ced8
30 changed files with 243 additions and 372 deletions
|
|
@ -237,7 +237,12 @@ public class Client {
|
|||
}
|
||||
|
||||
public boolean startMatch(UUID roomId, UUID tableId) {
|
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
try {
|
||||
return clientMessageHandler.startMatch(roomId, tableId);
|
||||
} catch (Exception ex) {
|
||||
logger.error("Error starting match", ex);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean startTournament(UUID roomId, UUID tableId) {
|
||||
|
|
|
|||
|
|
@ -28,12 +28,12 @@ import org.mage.network.handlers.MessageHandler;
|
|||
import org.mage.network.handlers.server.HeartbeatHandler;
|
||||
import org.mage.network.handlers.PingMessageHandler;
|
||||
import org.mage.network.handlers.WriteListener;
|
||||
import org.mage.network.handlers.server.ChatMessageHandler;
|
||||
//import org.mage.network.handlers.server.ChatMessageHandler;
|
||||
import org.mage.network.handlers.server.ConnectionHandler;
|
||||
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.handlers.server.TableMessageHandler;
|
||||
//import org.mage.network.handlers.server.RegisterClientMessageHandler;
|
||||
//import org.mage.network.handlers.server.RoomMessageHandler;
|
||||
import org.mage.network.handlers.server.ServerRequestHandler;
|
||||
//import org.mage.network.handlers.server.TableMessageHandler;
|
||||
import org.mage.network.interfaces.MageServer;
|
||||
import org.mage.network.model.ChatMessageMessage;
|
||||
import org.mage.network.model.InformClientMessage;
|
||||
|
|
@ -61,23 +61,23 @@ public class Server {
|
|||
// private final MessageHandler h;
|
||||
private final PingMessageHandler pingMessageHandler = new PingMessageHandler();
|
||||
private final EventExecutorGroup handlersExecutor = new DefaultEventExecutorGroup(Runtime.getRuntime().availableProcessors() * 2);
|
||||
private final RegisterClientMessageHandler registerClientMessageHandler;
|
||||
// private final RegisterClientMessageHandler registerClientMessageHandler;
|
||||
|
||||
private final ChatMessageHandler chatMessageHandler;
|
||||
private final ServerMessageHandler serverMessageHandler;
|
||||
private final RoomMessageHandler roomMessageHandler;
|
||||
private final TableMessageHandler tableMessageHandler;
|
||||
// private final ChatMessageHandler chatMessageHandler;
|
||||
private final ServerRequestHandler serverMessageHandler;
|
||||
// private final RoomMessageHandler roomMessageHandler;
|
||||
// private final TableMessageHandler tableMessageHandler;
|
||||
|
||||
private final ExceptionHandler exceptionHandler;
|
||||
|
||||
public Server(MageServer server) {
|
||||
this.server = server;
|
||||
// h = new MessageHandler();
|
||||
registerClientMessageHandler = new RegisterClientMessageHandler(server);
|
||||
chatMessageHandler = new ChatMessageHandler(server);
|
||||
serverMessageHandler = new ServerMessageHandler(server);
|
||||
roomMessageHandler = new RoomMessageHandler(server);
|
||||
tableMessageHandler = new TableMessageHandler(server);
|
||||
// registerClientMessageHandler = new RegisterClientMessageHandler(server);
|
||||
// chatMessageHandler = new ChatMessageHandler(server);
|
||||
serverMessageHandler = new ServerRequestHandler(server);
|
||||
// roomMessageHandler = new RoomMessageHandler(server);
|
||||
// tableMessageHandler = new TableMessageHandler(server);
|
||||
|
||||
exceptionHandler = new ExceptionHandler();
|
||||
}
|
||||
|
|
@ -128,12 +128,12 @@ public class Server {
|
|||
ch.pipeline().addLast("pingMessageHandler", pingMessageHandler);
|
||||
|
||||
ch.pipeline().addLast("connectionHandler", new ConnectionHandler());
|
||||
ch.pipeline().addLast(handlersExecutor, "registerClientMessageHandler", registerClientMessageHandler);
|
||||
// ch.pipeline().addLast(handlersExecutor, "registerClientMessageHandler", registerClientMessageHandler);
|
||||
|
||||
ch.pipeline().addLast(handlersExecutor, "chatMessageHandler", chatMessageHandler);
|
||||
// ch.pipeline().addLast(handlersExecutor, "chatMessageHandler", chatMessageHandler);
|
||||
ch.pipeline().addLast(handlersExecutor, "serverMessageHandler", serverMessageHandler);
|
||||
ch.pipeline().addLast(handlersExecutor, "roomMessageHandler", roomMessageHandler);
|
||||
ch.pipeline().addLast(handlersExecutor, "tableMessageHandler", tableMessageHandler);
|
||||
// ch.pipeline().addLast(handlersExecutor, "roomMessageHandler", roomMessageHandler);
|
||||
// ch.pipeline().addLast(handlersExecutor, "tableMessageHandler", tableMessageHandler);
|
||||
|
||||
ch.pipeline().addLast("exceptionHandler", exceptionHandler);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ public class PingMessageHandler extends SimpleChannelInboundHandler<PingMessage>
|
|||
|
||||
@Override
|
||||
protected void messageReceived(ChannelHandlerContext ctx, PingMessage msg) throws Exception {
|
||||
ctx.writeAndFlush(pong);
|
||||
ctx.writeAndFlush(pong).addListener(WriteListener.getInstance());
|
||||
logger.info("Received ping. Sending pong");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ 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.StartMatchRequest;
|
||||
import org.mage.network.model.SwapSeatRequest;
|
||||
import org.mage.network.model.TableWaitingRequest;
|
||||
|
||||
|
|
@ -97,6 +98,12 @@ public class ClientMessageHandler extends SimpleChannelInboundHandler<ClientMess
|
|||
return booleanQueue.take();
|
||||
}
|
||||
|
||||
public boolean startMatch(UUID roomId, UUID tableId) throws Exception {
|
||||
booleanQueue.clear();
|
||||
ctx.writeAndFlush(new StartMatchRequest(roomId, tableId)).addListener(WriteListener.getInstance());
|
||||
return booleanQueue.take();
|
||||
}
|
||||
|
||||
public void joinChat(UUID chatId) {
|
||||
ctx.writeAndFlush(new JoinChatRequest(chatId)).addListener(WriteListener.getInstance());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import io.netty.channel.ChannelHandlerContext;
|
|||
import io.netty.handler.timeout.IdleState;
|
||||
import io.netty.handler.timeout.IdleStateEvent;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.mage.network.handlers.WriteListener;
|
||||
import org.mage.network.model.PingMessage;
|
||||
|
||||
/**
|
||||
|
|
@ -27,7 +28,7 @@ public class HeartbeatHandler extends ChannelHandlerAdapter {
|
|||
ctx.channel().close();
|
||||
logger.info("Disconnected due to extended idle");
|
||||
} else if (e.state() == IdleState.WRITER_IDLE) {
|
||||
ctx.writeAndFlush(ping);
|
||||
ctx.writeAndFlush(ping).addListener(WriteListener.getInstance());
|
||||
logger.info("Sending ping");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,41 +0,0 @@
|
|||
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.ChatMessageRequest;
|
||||
import org.mage.network.model.ChatRequest;
|
||||
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
|
||||
*/
|
||||
@Sharable
|
||||
public class ChatMessageHandler extends SimpleChannelInboundHandler<ChatRequest> {
|
||||
|
||||
private final MageServer server;
|
||||
|
||||
public ChatMessageHandler(MageServer server) {
|
||||
this.server = server;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void messageReceived(ChannelHandlerContext ctx, ChatRequest msg) {
|
||||
if (msg instanceof JoinChatRequest) {
|
||||
server.joinChat(msg.getChatId(), ctx.channel().id().asLongText());
|
||||
}
|
||||
if (msg instanceof ChatMessageRequest) {
|
||||
ChatMessageRequest r = (ChatMessageRequest)msg;
|
||||
server.receiveChatMessage(r.getChatId(), ctx.channel().id().asLongText(), r.getMessage());
|
||||
}
|
||||
if (msg instanceof LeaveChatRequest) {
|
||||
server.leaveChat(msg.getChatId(), ctx.channel().id().asLongText());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
package org.mage.network.handlers.server;
|
||||
|
||||
import io.netty.channel.ChannelHandler.Sharable;
|
||||
import io.netty.channel.ChannelHandlerAdapter;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.handler.timeout.IdleState;
|
||||
|
|
@ -8,6 +7,7 @@ import io.netty.handler.timeout.IdleStateEvent;
|
|||
import java.util.concurrent.TimeUnit;
|
||||
import mage.remote.DisconnectReason;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.mage.network.handlers.WriteListener;
|
||||
import org.mage.network.interfaces.MageServer;
|
||||
import org.mage.network.model.PingMessage;
|
||||
import org.mage.network.model.PongMessage;
|
||||
|
|
@ -47,7 +47,7 @@ public class HeartbeatHandler extends ChannelHandlerAdapter {
|
|||
logger.info("Disconnected due to extended idle");
|
||||
} else if (e.state() == IdleState.WRITER_IDLE) {
|
||||
startTime = System.nanoTime();
|
||||
ctx.writeAndFlush(ping);
|
||||
ctx.writeAndFlush(ping).addListener(WriteListener.getInstance());
|
||||
logger.info("Sending ping");
|
||||
}
|
||||
}
|
||||
|
|
@ -64,6 +64,6 @@ public class HeartbeatHandler extends ChannelHandlerAdapter {
|
|||
|
||||
public void pingClient() {
|
||||
startTime = System.nanoTime();
|
||||
ctx.writeAndFlush(ping);
|
||||
ctx.writeAndFlush(ping).addListener(WriteListener.getInstance());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,44 +0,0 @@
|
|||
package org.mage.network.handlers.server;
|
||||
|
||||
import io.netty.channel.ChannelHandler.Sharable;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.channel.SimpleChannelInboundHandler;
|
||||
import java.net.InetSocketAddress;
|
||||
import mage.interfaces.ServerState;
|
||||
import mage.remote.DisconnectReason;
|
||||
import org.mage.network.interfaces.MageServer;
|
||||
import org.mage.network.model.RegisterClientRequest;
|
||||
import org.mage.network.model.ClientRegisteredMessage;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
@Sharable
|
||||
public class RegisterClientMessageHandler extends SimpleChannelInboundHandler<RegisterClientRequest> {
|
||||
|
||||
private final MageServer server;
|
||||
|
||||
public RegisterClientMessageHandler (MageServer server) {
|
||||
this.server = server;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void messageReceived(ChannelHandlerContext ctx, RegisterClientRequest msg) throws Exception {
|
||||
String host = ((InetSocketAddress)ctx.channel().remoteAddress()).getAddress().getHostAddress();
|
||||
boolean result = server.registerClient(msg.getConnection(), ctx.channel().id().asLongText(), msg.getMageVersion(), host);
|
||||
if (result) {
|
||||
ctx.writeAndFlush(new ClientRegisteredMessage(server.getServerState()));
|
||||
}
|
||||
else {
|
||||
ctx.writeAndFlush(new ClientRegisteredMessage(new ServerState()));
|
||||
server.disconnect(ctx.channel().id().asLongText(), DisconnectReason.ValidationError);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
|
||||
server.disconnect(ctx.channel().id().asLongText(), DisconnectReason.Disconnected);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
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.ChatRoomIdMessage;
|
||||
import org.mage.network.model.ChatRoomIdRequest;
|
||||
import org.mage.network.model.CreateTableMessage;
|
||||
import org.mage.network.model.CreateTableRequest;
|
||||
import org.mage.network.model.GetRoomRequest;
|
||||
import org.mage.network.model.RoomMessage;
|
||||
import org.mage.network.model.RoomRequest;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
@Sharable
|
||||
public class RoomMessageHandler extends SimpleChannelInboundHandler<RoomRequest> {
|
||||
|
||||
private final MageServer server;
|
||||
|
||||
public RoomMessageHandler (MageServer server) {
|
||||
this.server = server;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void messageReceived(ChannelHandlerContext ctx, RoomRequest msg) {
|
||||
if (msg instanceof CreateTableRequest) {
|
||||
CreateTableRequest r = (CreateTableRequest)msg;
|
||||
ctx.writeAndFlush(new CreateTableMessage(server.createTable(ctx.channel().id().asLongText(), r.getRoomId(), r.getMatchOptions())));
|
||||
}
|
||||
else if (msg instanceof ChatRoomIdRequest) {
|
||||
ctx.writeAndFlush(new ChatRoomIdMessage(server.getRoomChatId(msg.getRoomId())));
|
||||
}
|
||||
else if (msg instanceof GetRoomRequest) {
|
||||
ctx.writeAndFlush(new RoomMessage(server.getRoom(msg.getRoomId())));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
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;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
@Sharable
|
||||
public class ServerMessageHandler extends SimpleChannelInboundHandler<ServerMessagesRequest> {
|
||||
|
||||
private final MageServer server;
|
||||
|
||||
public ServerMessageHandler (MageServer server) {
|
||||
this.server = server;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void messageReceived(ChannelHandlerContext ctx, ServerMessagesRequest msg) {
|
||||
ctx.writeAndFlush(new ServerMessagesMessage(server.getServerMessages()));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
package org.mage.network.handlers.server;
|
||||
|
||||
import io.netty.channel.ChannelHandler.Sharable;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.channel.SimpleChannelInboundHandler;
|
||||
import mage.remote.DisconnectReason;
|
||||
import org.mage.network.interfaces.MageServer;
|
||||
import org.mage.network.model.ServerRequest;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
@Sharable
|
||||
public class ServerRequestHandler extends SimpleChannelInboundHandler<ServerRequest> {
|
||||
|
||||
private final MageServer server;
|
||||
|
||||
public ServerRequestHandler(MageServer server) {
|
||||
this.server = server;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void messageReceived(ChannelHandlerContext ctx, ServerRequest msg) {
|
||||
msg.handleMessage(server, ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
|
||||
server.disconnect(ctx.channel().id().asLongText(), DisconnectReason.Disconnected);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
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.CreateTableMessage;
|
||||
import org.mage.network.model.CreateTableRequest;
|
||||
import org.mage.network.model.JoinTableMessage;
|
||||
import org.mage.network.model.JoinTableRequest;
|
||||
import org.mage.network.model.LeaveTableRequest;
|
||||
import org.mage.network.model.LeftTableMessage;
|
||||
import org.mage.network.model.RemoveTableRequest;
|
||||
import org.mage.network.model.SwapSeatRequest;
|
||||
import org.mage.network.model.TableRequest;
|
||||
import org.mage.network.model.TableWaitingMessage;
|
||||
import org.mage.network.model.TableWaitingRequest;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
@Sharable
|
||||
public class TableMessageHandler extends SimpleChannelInboundHandler<TableRequest> {
|
||||
|
||||
private final MageServer server;
|
||||
|
||||
public TableMessageHandler (MageServer server) {
|
||||
this.server = server;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void messageReceived(ChannelHandlerContext ctx, TableRequest msg) {
|
||||
if (msg instanceof TableWaitingRequest) {
|
||||
ctx.writeAndFlush(new TableWaitingMessage(server.getTable(msg.getRoomId(), msg.getTableId())));
|
||||
}
|
||||
if (msg instanceof RemoveTableRequest) {
|
||||
server.removeTable(ctx.channel().id().asLongText(), msg.getRoomId(), msg.getTableId());
|
||||
}
|
||||
if (msg instanceof LeaveTableRequest) {
|
||||
ctx.writeAndFlush(new LeftTableMessage(server.leaveTable(ctx.channel().id().asLongText(), msg.getRoomId(), msg.getTableId())));
|
||||
}
|
||||
if (msg instanceof JoinTableRequest) {
|
||||
JoinTableRequest r = (JoinTableRequest)msg;
|
||||
ctx.writeAndFlush(new JoinTableMessage(server.joinTable(ctx.channel().id().asLongText(), r.getRoomId(), r.getTableId(), r.getName(), r.getPlayerType(), r.getSkill(), r.getDeckCardLists(), r.getPassword())));
|
||||
}
|
||||
if (msg instanceof SwapSeatRequest) {
|
||||
SwapSeatRequest r = (SwapSeatRequest)msg;
|
||||
server.swapSeats(ctx.channel().id().asLongText(), r.getRoomId(), r.getTableId(), r.getSeatNum1(), r.getSeatNum2());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -36,7 +36,9 @@ public interface MageServer {
|
|||
boolean leaveTable(String sessionId, UUID roomId, UUID tableId);
|
||||
void removeTable(String sessionId, UUID roomId, UUID tableId);
|
||||
void swapSeats(String sessionId, UUID roomId, UUID tableId, int seatNum1, int seatNum2);
|
||||
|
||||
|
||||
boolean startMatch(String sessionId, UUID roomId, UUID tableId);
|
||||
|
||||
void pingTime(long milliSeconds, String sessionId);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,22 +1,26 @@
|
|||
package org.mage.network.model;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import java.util.UUID;
|
||||
import org.mage.network.interfaces.MageServer;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
public class ChatMessageRequest extends ChatRequest {
|
||||
public class ChatMessageRequest extends ServerRequest {
|
||||
|
||||
private UUID chatId;
|
||||
private String message;
|
||||
|
||||
public ChatMessageRequest(UUID chatId, String message) {
|
||||
super(chatId);
|
||||
this.chatId = chatId;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
|
||||
@Override
|
||||
public void handleMessage(MageServer server, ChannelHandlerContext ctx) {
|
||||
server.receiveChatMessage(chatId, ctx.channel().id().asLongText(), message);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,22 +0,0 @@
|
|||
package org.mage.network.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
public abstract class ChatRequest implements Serializable {
|
||||
|
||||
private UUID chatId;
|
||||
|
||||
public ChatRequest(UUID chatId) {
|
||||
this.chatId = chatId;
|
||||
}
|
||||
|
||||
public UUID getChatId() {
|
||||
return chatId;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,15 +1,25 @@
|
|||
package org.mage.network.model;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import java.util.UUID;
|
||||
import org.mage.network.handlers.WriteListener;
|
||||
import org.mage.network.interfaces.MageServer;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
public class ChatRoomIdRequest extends RoomRequest {
|
||||
public class ChatRoomIdRequest extends ServerRequest {
|
||||
|
||||
private UUID roomId;
|
||||
|
||||
public ChatRoomIdRequest(UUID roomId) {
|
||||
super(roomId);
|
||||
this.roomId = roomId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMessage(MageServer server, ChannelHandlerContext ctx) {
|
||||
ctx.writeAndFlush(new ChatRoomIdMessage(server.getRoomChatId(roomId))).addListener(WriteListener.getInstance());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,24 +1,28 @@
|
|||
package org.mage.network.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import java.util.UUID;
|
||||
import mage.game.match.MatchOptions;
|
||||
import org.mage.network.handlers.WriteListener;
|
||||
import org.mage.network.interfaces.MageServer;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
public class CreateTableRequest extends RoomRequest {
|
||||
public class CreateTableRequest extends ServerRequest {
|
||||
|
||||
private UUID roomId;
|
||||
private MatchOptions options;
|
||||
|
||||
public CreateTableRequest(UUID roomId, MatchOptions options) {
|
||||
super(roomId);
|
||||
this.roomId = roomId;
|
||||
this.options = options;
|
||||
}
|
||||
|
||||
public MatchOptions getMatchOptions() {
|
||||
return options;
|
||||
@Override
|
||||
public void handleMessage(MageServer server, ChannelHandlerContext ctx) {
|
||||
ctx.writeAndFlush(new CreateTableMessage(server.createTable(ctx.channel().id().asLongText(), roomId, options))).addListener(WriteListener.getInstance());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,25 @@
|
|||
package org.mage.network.model;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import java.util.UUID;
|
||||
import org.mage.network.handlers.WriteListener;
|
||||
import org.mage.network.interfaces.MageServer;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
public class GetRoomRequest extends RoomRequest {
|
||||
public class GetRoomRequest extends ServerRequest {
|
||||
|
||||
private UUID roomId;
|
||||
|
||||
public GetRoomRequest(UUID roomId) {
|
||||
super(roomId);
|
||||
this.roomId = roomId;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void handleMessage(MageServer server, ChannelHandlerContext ctx) {
|
||||
ctx.writeAndFlush(new RoomMessage(server.getRoom(roomId))).addListener(WriteListener.getInstance());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,24 @@
|
|||
package org.mage.network.model;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import java.util.UUID;
|
||||
import org.mage.network.interfaces.MageServer;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
public class JoinChatRequest extends ChatRequest {
|
||||
public class JoinChatRequest extends ServerRequest {
|
||||
|
||||
private UUID chatId;
|
||||
|
||||
public JoinChatRequest(UUID chatId) {
|
||||
super(chatId);
|
||||
this.chatId = chatId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMessage(MageServer server, ChannelHandlerContext ctx) {
|
||||
server.joinChat(chatId, ctx.channel().id().asLongText());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,14 +1,19 @@
|
|||
package org.mage.network.model;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import java.util.UUID;
|
||||
import mage.cards.decks.DeckCardLists;
|
||||
import org.mage.network.handlers.WriteListener;
|
||||
import org.mage.network.interfaces.MageServer;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
public class JoinTableRequest extends TableRequest {
|
||||
public class JoinTableRequest extends ServerRequest {
|
||||
|
||||
private UUID roomId;
|
||||
private UUID tableId;
|
||||
private String name;
|
||||
private String playerType;
|
||||
private int skill;
|
||||
|
|
@ -16,7 +21,8 @@ public class JoinTableRequest extends TableRequest {
|
|||
private String password;
|
||||
|
||||
public JoinTableRequest(UUID roomId, UUID tableId, String name, String playerType, int skill, DeckCardLists deckList, String password) {
|
||||
super(roomId, tableId);
|
||||
this.roomId = roomId;
|
||||
this.tableId = tableId;
|
||||
this.name = name;
|
||||
this.playerType = playerType;
|
||||
this.skill = skill;
|
||||
|
|
@ -24,24 +30,9 @@ public class JoinTableRequest extends TableRequest {
|
|||
this.password = password;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getPlayerType() {
|
||||
return playerType;
|
||||
}
|
||||
|
||||
public int getSkill() {
|
||||
return skill;
|
||||
}
|
||||
|
||||
public DeckCardLists getDeckCardLists() {
|
||||
return deckList;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
@Override
|
||||
public void handleMessage(MageServer server, ChannelHandlerContext ctx) {
|
||||
ctx.writeAndFlush(new JoinTableMessage(server.joinTable(ctx.channel().id().asLongText(), roomId, tableId, name, playerType, skill, deckList, password))).addListener(WriteListener.getInstance());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,24 @@
|
|||
package org.mage.network.model;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import java.util.UUID;
|
||||
import org.mage.network.interfaces.MageServer;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
public class LeaveChatRequest extends ChatRequest {
|
||||
public class LeaveChatRequest extends ServerRequest {
|
||||
|
||||
private UUID chatId;
|
||||
|
||||
public LeaveChatRequest(UUID chatId) {
|
||||
super(chatId);
|
||||
this.chatId = chatId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMessage(MageServer server, ChannelHandlerContext ctx) {
|
||||
server.leaveChat(chatId, ctx.channel().id().asLongText());
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,16 +1,27 @@
|
|||
package org.mage.network.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import java.util.UUID;
|
||||
import org.mage.network.handlers.WriteListener;
|
||||
import org.mage.network.interfaces.MageServer;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
public class LeaveTableRequest extends TableRequest {
|
||||
public class LeaveTableRequest extends ServerRequest {
|
||||
|
||||
private UUID roomId;
|
||||
private UUID tableId;
|
||||
|
||||
public LeaveTableRequest(UUID roomId, UUID tableId) {
|
||||
super(roomId, tableId);
|
||||
this.roomId = roomId;
|
||||
this.tableId = tableId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMessage(MageServer server, ChannelHandlerContext ctx) {
|
||||
ctx.writeAndFlush(new LeftTableMessage(server.leaveTable(ctx.channel().id().asLongText(), roomId, tableId))).addListener(WriteListener.getInstance());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,14 +1,19 @@
|
|||
package org.mage.network.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import java.net.InetSocketAddress;
|
||||
import mage.interfaces.ServerState;
|
||||
import mage.remote.Connection;
|
||||
import mage.remote.DisconnectReason;
|
||||
import mage.utils.MageVersion;
|
||||
import org.mage.network.handlers.WriteListener;
|
||||
import org.mage.network.interfaces.MageServer;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
public class RegisterClientRequest implements Serializable {
|
||||
public class RegisterClientRequest extends ServerRequest {
|
||||
private Connection connection;
|
||||
private MageVersion version;
|
||||
|
||||
|
|
@ -17,12 +22,17 @@ public class RegisterClientRequest implements Serializable {
|
|||
this.version = version;
|
||||
}
|
||||
|
||||
public Connection getConnection() {
|
||||
return connection;
|
||||
}
|
||||
|
||||
public MageVersion getMageVersion() {
|
||||
return version;
|
||||
@Override
|
||||
public void handleMessage(MageServer server, ChannelHandlerContext ctx) {
|
||||
String host = ((InetSocketAddress)ctx.channel().remoteAddress()).getAddress().getHostAddress();
|
||||
boolean result = server.registerClient(connection, ctx.channel().id().asLongText(), version, host);
|
||||
if (result) {
|
||||
ctx.writeAndFlush(new ClientRegisteredMessage(server.getServerState())).addListener(WriteListener.getInstance());
|
||||
}
|
||||
else {
|
||||
ctx.writeAndFlush(new ClientRegisteredMessage(new ServerState())).addListener(WriteListener.getInstance());
|
||||
server.disconnect(ctx.channel().id().asLongText(), DisconnectReason.ValidationError);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,17 +1,26 @@
|
|||
package org.mage.network.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import java.util.UUID;
|
||||
import org.mage.network.interfaces.MageServer;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
public class RemoveTableRequest extends TableRequest {
|
||||
public class RemoveTableRequest extends ServerRequest {
|
||||
|
||||
private UUID roomId;
|
||||
private UUID tableId;
|
||||
|
||||
public RemoveTableRequest(UUID roomId, UUID tableId) {
|
||||
super(roomId, tableId);
|
||||
this.roomId = roomId;
|
||||
this.tableId = tableId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMessage(MageServer server, ChannelHandlerContext ctx) {
|
||||
server.removeTable(ctx.channel().id().asLongText(), roomId, tableId);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,22 +0,0 @@
|
|||
package org.mage.network.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
public abstract class RoomRequest implements Serializable {
|
||||
|
||||
private UUID roomId;
|
||||
|
||||
public RoomRequest(UUID roomId) {
|
||||
this.roomId = roomId;
|
||||
}
|
||||
|
||||
public UUID getRoomId() {
|
||||
return roomId;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,12 +1,19 @@
|
|||
package org.mage.network.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import org.mage.network.handlers.WriteListener;
|
||||
import org.mage.network.interfaces.MageServer;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
public class ServerMessagesRequest implements Serializable {
|
||||
public class ServerMessagesRequest extends ServerRequest {
|
||||
|
||||
@Override
|
||||
public void handleMessage(MageServer server, ChannelHandlerContext ctx) {
|
||||
ctx.writeAndFlush(new ServerMessagesMessage(server.getServerMessages())).addListener(WriteListener.getInstance());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
package org.mage.network.model;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import java.io.Serializable;
|
||||
import org.mage.network.interfaces.MageServer;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
public abstract class ServerRequest implements Serializable {
|
||||
|
||||
public abstract void handleMessage(MageServer server, ChannelHandlerContext ctx);
|
||||
|
||||
}
|
||||
|
|
@ -1,28 +1,30 @@
|
|||
package org.mage.network.model;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import java.util.UUID;
|
||||
import org.mage.network.interfaces.MageServer;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
public class SwapSeatRequest extends TableRequest {
|
||||
public class SwapSeatRequest extends ServerRequest {
|
||||
|
||||
private UUID roomId;
|
||||
private UUID tableId;
|
||||
private int seatNum1;
|
||||
private int seatNum2;
|
||||
|
||||
public SwapSeatRequest(UUID roomId, UUID tableId, int seatNum1, int seatNum2) {
|
||||
super(roomId, tableId);
|
||||
this.roomId = roomId;
|
||||
this.tableId = tableId;
|
||||
this.seatNum1 = seatNum1;
|
||||
this.seatNum2 = seatNum2;
|
||||
}
|
||||
|
||||
public int getSeatNum1() {
|
||||
return seatNum1;
|
||||
}
|
||||
|
||||
public int getSeatNum2() {
|
||||
return seatNum2;
|
||||
@Override
|
||||
public void handleMessage(MageServer server, ChannelHandlerContext ctx) {
|
||||
server.swapSeats(ctx.channel().id().asLongText(), roomId, tableId, seatNum1, seatNum2);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,28 +0,0 @@
|
|||
package org.mage.network.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
public abstract class TableRequest implements Serializable {
|
||||
|
||||
protected UUID roomId;
|
||||
protected UUID tableId;
|
||||
|
||||
public TableRequest(UUID roomId, UUID tableId) {
|
||||
this.roomId = roomId;
|
||||
this.tableId = tableId;
|
||||
}
|
||||
|
||||
public UUID getRoomId() {
|
||||
return roomId;
|
||||
}
|
||||
|
||||
public UUID getTableId() {
|
||||
return tableId;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,15 +1,27 @@
|
|||
package org.mage.network.model;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import java.util.UUID;
|
||||
import org.mage.network.handlers.WriteListener;
|
||||
import org.mage.network.interfaces.MageServer;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
public class TableWaitingRequest extends TableRequest {
|
||||
public class TableWaitingRequest extends ServerRequest {
|
||||
|
||||
private UUID roomId;
|
||||
private UUID tableId;
|
||||
|
||||
public TableWaitingRequest(UUID roomId, UUID tableId) {
|
||||
super(roomId, tableId);
|
||||
this.roomId = roomId;
|
||||
this.tableId = tableId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMessage(MageServer server, ChannelHandlerContext ctx) {
|
||||
ctx.writeAndFlush(new TableWaitingMessage(server.getTable(roomId, tableId))).addListener(WriteListener.getInstance());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue