diff --git a/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java b/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java index 1c738cc50bf..8c51623d435 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java @@ -98,6 +98,7 @@ public class ConnectDialog extends MageDialog { this.txtUserName.setText(MageFrame.getPreferences().get("userName", "")); this.chkAutoConnect.setSelected(Boolean.parseBoolean(MageFrame.getPreferences().get("autoConnect", "false"))); this.chkForceUpdateDB.setSelected(false); // has always to be set manually to force comparison + this.lblStatus.setText(""); this.setModal(true); this.setLocation(50, 50); this.setVisible(true); @@ -366,7 +367,6 @@ public class ConnectDialog extends MageDialog { if (result) { lblStatus.setText(""); connected(); -// MageFrame.getInstance().showGames(false); } else { lblStatus.setText("Could not connect"); } @@ -374,11 +374,13 @@ public class ConnectDialog extends MageDialog { logger.fatal("Update Players Task error", ex); } catch (ExecutionException ex) { logger.fatal("Update Players Task error", ex); + lblStatus.setText("Could not connect. Server not available."); } catch (CancellationException ex) { logger.info("Connect was canceled"); lblStatus.setText("Connect was canceled"); } catch (TimeoutException ex) { logger.fatal("Connection timeout: ", ex); + lblStatus.setText("Could not connect"); } finally { // MageFrame.stopConnecting(); btnConnect.setEnabled(true); 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 371826ad1cf..22bd57c9f5f 100644 --- a/Mage.Network/src/main/java/org/mage/network/Client.java +++ b/Mage.Network/src/main/java/org/mage/network/Client.java @@ -39,6 +39,7 @@ 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.ClientRegisteredMessageHandler; +import org.mage.network.handlers.client.ConnectionHandler; import org.mage.network.handlers.client.InformClientMessageHandler; import org.mage.network.handlers.client.ServerMessageHandler; import org.mage.network.handlers.client.RoomMessageHandler; @@ -58,6 +59,7 @@ 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; @@ -75,6 +77,7 @@ 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); @@ -126,6 +129,7 @@ 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()); 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 new file mode 100644 index 00000000000..d88ce5086a8 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/handlers/client/ConnectionHandler.java @@ -0,0 +1,28 @@ +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; +import org.mage.network.model.MessageType; + +/** + * + * @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