network logging + client network timing work
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit

This commit is contained in:
austin 2025-05-29 21:55:17 -04:00
parent 5c5ba32df7
commit 63ed9fc06d
4 changed files with 23 additions and 10 deletions

View File

@ -278,6 +278,7 @@ public class ClientNetworking implements Runnable {
//attempt poll incoming messages //attempt poll incoming messages
long readStart = System.currentTimeMillis(); long readStart = System.currentTimeMillis();
try { try {
LoggerInterface.loggerNetworking.DEBUG_LOOP("[CLIENT] Try to read messages in");
parser.readMessagesIn(); parser.readMessagesIn();
} catch (IOException e) { } catch (IOException e) {
LoggerInterface.loggerNetworking.ERROR(e); LoggerInterface.loggerNetworking.ERROR(e);
@ -291,6 +292,7 @@ public class ClientNetworking implements Runnable {
// //
//outgoing messages //outgoing messages
try { try {
LoggerInterface.loggerNetworking.DEBUG_LOOP("[CLIENT] Try to write messages out");
parser.pushMessagesOut(); parser.pushMessagesOut();
} catch(IOException e){ } catch(IOException e){
LoggerInterface.loggerNetworking.ERROR(e); LoggerInterface.loggerNetworking.ERROR(e);
@ -301,6 +303,7 @@ public class ClientNetworking implements Runnable {
// //
//parses messages asynchronously //parses messages asynchronously
LoggerInterface.loggerNetworking.DEBUG_LOOP("[CLIENT] Parse asynchronous messages");
boolean foundMessages = this.parseMessagesAsynchronously(); boolean foundMessages = this.parseMessagesAsynchronously();
@ -333,6 +336,13 @@ public class ClientNetworking implements Runnable {
//TODO: kick us back to the main menu //TODO: kick us back to the main menu
break; break;
} }
try {
//sleep
TimeUnit.MILLISECONDS.sleep(1);
} catch (InterruptedException ex) {
//silently ignore
// CodeUtils.todo(ex, "Handle sleep interrupt on server connection");
}
} }
if(this.socket != null){ if(this.socket != null){

View File

@ -18,6 +18,7 @@ public class AuthProtocol implements ClientProtocolTemplate<AuthMessage> {
case AUTHREQUEST: { case AUTHREQUEST: {
//Try login //Try login
Globals.clientState.clientConnection.queueOutgoingMessage(AuthMessage.constructAuthDetailsMessage(Globals.clientState.clientUsername,Globals.clientState.clientPassword)); Globals.clientState.clientConnection.queueOutgoingMessage(AuthMessage.constructAuthDetailsMessage(Globals.clientState.clientUsername,Globals.clientState.clientPassword));
LoggerInterface.loggerNetworking.INFO("[CLIENT] Received auth request");
} break; } break;
case AUTHSUCCESS: { case AUTHSUCCESS: {
//clean password hash from memory //clean password hash from memory
@ -27,11 +28,11 @@ public class AuthProtocol implements ClientProtocolTemplate<AuthMessage> {
//request characters available to this player //request characters available to this player
Globals.clientState.clientConnection.queueOutgoingMessage(CharacterMessage.constructRequestCharacterListMessage()); Globals.clientState.clientConnection.queueOutgoingMessage(CharacterMessage.constructRequestCharacterListMessage());
//log that we succeeded //log that we succeeded
LoggerInterface.loggerAuth.INFO("Successfully logged in"); LoggerInterface.loggerNetworking.INFO("[CLIENT] Successfully logged in");
} break; } break;
case AUTHFAILURE: { case AUTHFAILURE: {
//TODO: handle better //TODO: handle better
LoggerInterface.loggerAuth.ERROR("Auth failure",new Exception("Auth failure")); LoggerInterface.loggerNetworking.ERROR("Auth failure",new Exception("Auth failure"));
} break; } break;
//ignore stack //ignore stack
case AUTHDETAILS: { case AUTHDETAILS: {

View File

@ -238,6 +238,7 @@ public class ServerConnectionHandler implements Runnable {
// //
//parse messages both incoming and outgoing //parse messages both incoming and outgoing
try { try {
LoggerInterface.loggerNetworking.DEBUG_LOOP("[SERVER] Try to read messages in");
receivedMessageThisLoop = this.parseMessages(); receivedMessageThisLoop = this.parseMessages();
} catch (SocketException e) { } catch (SocketException e) {
//if we get a SocketException broken pipe (basically the client dc'd without telling us) //if we get a SocketException broken pipe (basically the client dc'd without telling us)
@ -320,6 +321,7 @@ public class ServerConnectionHandler implements Runnable {
//Read in messages //Read in messages
// //
//attempt poll incoming messages //attempt poll incoming messages
LoggerInterface.loggerNetworking.DEBUG_LOOP("[SERVER] Try to read messages in");
networkParser.readMessagesIn(); networkParser.readMessagesIn();
rVal = networkParser.hasIncomingMessaage(); rVal = networkParser.hasIncomingMessaage();
@ -342,6 +344,7 @@ public class ServerConnectionHandler implements Runnable {
// //
//ponder incoming messages //ponder incoming messages
while(networkParser.hasIncomingMessaage()){ while(networkParser.hasIncomingMessaage()){
LoggerInterface.loggerNetworking.DEBUG_LOOP("[SERVER] Handle async messages");
NetworkMessage message = networkParser.popIncomingMessage(); NetworkMessage message = networkParser.popIncomingMessage();
this.messageProtocol.handleAsyncMessage(message); this.messageProtocol.handleAsyncMessage(message);
} }
@ -363,6 +366,7 @@ public class ServerConnectionHandler implements Runnable {
//Send out messages //Send out messages
// //
//push outgoing message //push outgoing message
LoggerInterface.loggerNetworking.DEBUG_LOOP("[SERVER] Try to write messages out");
networkParser.pushMessagesOut(); networkParser.pushMessagesOut();
try { try {
//sleep //sleep

View File

@ -3,6 +3,7 @@ package electrosphere.net.server.protocol;
import electrosphere.auth.AuthenticationManager; import electrosphere.auth.AuthenticationManager;
import electrosphere.engine.EngineState; import electrosphere.engine.EngineState;
import electrosphere.engine.Globals; import electrosphere.engine.Globals;
import electrosphere.logger.LoggerInterface;
import electrosphere.net.parser.net.message.AuthMessage; import electrosphere.net.parser.net.message.AuthMessage;
import electrosphere.net.parser.net.message.PlayerMessage; import electrosphere.net.parser.net.message.PlayerMessage;
import electrosphere.net.server.ServerConnectionHandler; import electrosphere.net.server.ServerConnectionHandler;
@ -17,7 +18,7 @@ public class AuthProtocol implements ServerProtocolTemplate<AuthMessage> {
@Override @Override
public AuthMessage handleAsyncMessage(ServerConnectionHandler connectionHandler, AuthMessage message) { public AuthMessage handleAsyncMessage(ServerConnectionHandler connectionHandler, AuthMessage message) {
switch(message.getMessageSubtype()){ switch(message.getMessageSubtype()){
case AUTHDETAILS: case AUTHDETAILS: {
//auth check //auth check
int loginId = Globals.authenticationManager.authenticate(message.getuser(), message.getpass()); int loginId = Globals.authenticationManager.authenticate(message.getuser(), message.getpass());
if(loginId != AuthenticationManager.INVALID_LOGIN){ if(loginId != AuthenticationManager.INVALID_LOGIN){
@ -33,16 +34,13 @@ public class AuthProtocol implements ServerProtocolTemplate<AuthMessage> {
} else { } else {
connectionHandler.addMessagetoOutgoingQueue(AuthMessage.constructAuthFailureMessage()); connectionHandler.addMessagetoOutgoingQueue(AuthMessage.constructAuthFailureMessage());
} }
break; LoggerInterface.loggerNetworking.INFO("[SERVER] Received auth details");
} break;
case AUTHREQUEST: case AUTHREQUEST:
//silently drop
break;
case AUTHSUCCESS: case AUTHSUCCESS:
case AUTHFAILURE: {
//silently drop //silently drop
break; } break;
case AUTHFAILURE:
//silently drop
break;
} }
return null; return null;
} }