diff --git a/src/main/java/electrosphere/net/client/ClientNetworking.java b/src/main/java/electrosphere/net/client/ClientNetworking.java index 86600f2e..3cade1cb 100644 --- a/src/main/java/electrosphere/net/client/ClientNetworking.java +++ b/src/main/java/electrosphere/net/client/ClientNetworking.java @@ -11,6 +11,8 @@ import electrosphere.net.parser.net.message.EntityMessage; import electrosphere.net.parser.net.message.NetworkMessage; import electrosphere.net.parser.net.message.PlayerMessage; import electrosphere.net.parser.net.message.ServerMessage; +import electrosphere.net.parser.net.message.NetworkMessage.MessageType; +import electrosphere.net.parser.net.message.ServerMessage.ServerMessageType; import electrosphere.net.parser.net.raw.NetworkParser; import java.io.IOException; import java.io.InputStream; @@ -49,8 +51,13 @@ public class ClientNetworking implements Runnable{ static final int MAX_CONNECTION_ATTEMPTS = 10; + //set to true to also get ping and pong messages in debug logging + boolean echoPings = false; + + //thresholds for when to send pings and to determine when we've disconnected static final long SEND_PING_THRESHOLD = 3000; static final long PING_DISCONNECT_THRESHOLD = 20000; + //times for calculating ping-pong long lastPingTime = 0; long lastPongTime = 0; @@ -151,12 +158,33 @@ public class ClientNetworking implements Runnable{ if(initialized){ while(parser.hasIncomingMessaage()){ NetworkMessage message = parser.popIncomingMessage(); - LoggerInterface.loggerNetworking.DEBUG("[Client] New message " + message.getType()); + //print network message + printMessage(message); //do something clientProtocol.handleMessage(message); } } } + + /** + * Print out the network message type, this only prints ping and pong if echoPings is true + */ + void printMessage(NetworkMessage message){ + //only print ping and pong if echoPings is true + if(message.getType() == MessageType.SERVER_MESSAGE){ + if((((ServerMessage)message).getMessageSubtype()) == ServerMessageType.PING || + (((ServerMessage)message).getMessageSubtype()) == ServerMessageType.PONG + ){ + if(this.echoPings == true){ + LoggerInterface.loggerNetworking.DEBUG("[Server] New message " + message.getType()); + } + } else { + LoggerInterface.loggerNetworking.DEBUG("[Server] New message " + message.getType()); + } + } else { + LoggerInterface.loggerNetworking.DEBUG("[Server] New message " + message.getType()); + } + } public void queueOutgoingMessage(NetworkMessage message){ diff --git a/src/main/java/electrosphere/net/server/protocol/ServerProtocol.java b/src/main/java/electrosphere/net/server/protocol/ServerProtocol.java index c391c8f9..8f4e3c72 100644 --- a/src/main/java/electrosphere/net/server/protocol/ServerProtocol.java +++ b/src/main/java/electrosphere/net/server/protocol/ServerProtocol.java @@ -23,19 +23,24 @@ import electrosphere.net.parser.net.message.NetworkMessage; import electrosphere.net.parser.net.message.PlayerMessage; import electrosphere.net.parser.net.message.ServerMessage; import electrosphere.net.parser.net.message.TerrainMessage; +import electrosphere.net.parser.net.message.NetworkMessage.MessageType; +import electrosphere.net.parser.net.message.ServerMessage.ServerMessageType; import electrosphere.net.server.ServerConnectionHandler; import electrosphere.net.server.player.Player; public class ServerProtocol { ServerConnectionHandler connectionHandler; + boolean echoPings = false; public ServerProtocol(ServerConnectionHandler connectionHandler){ this.connectionHandler = connectionHandler; } public void handleMessage(NetworkMessage message){ - LoggerInterface.loggerNetworking.DEBUG("[Server] New message " + message.getType()); + //print out message + printMessage(message); + //actually handle message switch(message.getType()){ case ENTITY_MESSAGE: EntityProtocol.handleEntityMessage(connectionHandler, (EntityMessage)message); @@ -74,4 +79,24 @@ public class ServerProtocol { } } + /** + * Print out the network message type, this only prints ping and pong if echoPings is true + */ + void printMessage(NetworkMessage message){ + //only print ping and pong if echoPings is true + if(message.getType() == MessageType.SERVER_MESSAGE){ + if((((ServerMessage)message).getMessageSubtype()) == ServerMessageType.PING || + (((ServerMessage)message).getMessageSubtype()) == ServerMessageType.PONG + ){ + if(this.echoPings == true){ + LoggerInterface.loggerNetworking.DEBUG("[Server] New message " + message.getType()); + } + } else { + LoggerInterface.loggerNetworking.DEBUG("[Server] New message " + message.getType()); + } + } else { + LoggerInterface.loggerNetworking.DEBUG("[Server] New message " + message.getType()); + } + } + }