mirror of
https://github.com/magefree/mage.git
synced 2025-12-24 04:22:01 -08:00
improved handling of disconnects
This commit is contained in:
parent
481e177d71
commit
20a25ffdab
3 changed files with 35 additions and 1 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue