conditional ping and pong echo to log

This commit is contained in:
austin 2022-05-09 15:10:00 -04:00
parent ab5abb019f
commit 3e44bfbb79
2 changed files with 55 additions and 2 deletions

View File

@ -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){

View File

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