Added logging.

This commit is contained in:
lieght
2025-09-10 21:21:20 +02:00
parent a80cd5aca1
commit de66133b66
9 changed files with 136 additions and 73 deletions

11
pom.xml
View File

@@ -39,7 +39,16 @@
<artifactId>guava</artifactId>
<version>33.4.8-jre</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.25.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.25.1</version>
</dependency>
<dependency>
<groupId>org.lwjgl</groupId>
<artifactId>lwjgl</artifactId>

View File

@@ -1,4 +1,5 @@
package org.toop;
public class Client {
}

View File

@@ -5,47 +5,64 @@ import org.toop.eventbus.Events;
import org.toop.eventbus.GlobalEventBus;
import org.toop.server.Server;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
public class Main {
private static final Logger logger = LogManager.getLogger(Main.class);
public static void main(String[] args) {
GlobalEventBus.subscribeAndRegister(Events.ServerEvents.OnChangingServerBackend.class, e -> {
System.out.println("Server backend has changed to -> " + e.backend());
});
GlobalEventBus.subscribeAndRegister(Events.ServerEvents.OnChangingServerIp.class, e -> {
System.out.println("Server ip has changed to -> " + e.ip());
});
GlobalEventBus.subscribeAndRegister(Events.ServerEvents.OnChangingServerPort.class, e -> {
System.out.println("Server port has changed to -> " + e.port());
});
if (!initEvents()) {
throw new RuntimeException("A event could not be initialized");
}
Server server = new Server(Server.ServerBackend.LOCAL, "127.0.0.1", "5000");
server.setBackend(Server.ServerBackend.REMOTE);
GlobalEventBus.subscribeAndRegister(Events.ServerEvents.OnCommand.class, e -> {
if (e.command() == Server.Command.LOGIN) {
System.out.println("LOGIN command -> " + String.join(" ", e.args()));
logger.info("LOGIN command -> {}", String.join(" ", e.args()));
}
else if (e.command() == Server.Command.HELP) {
System.out.println("HELP command -> " + String.join(" ", e.args()));
logger.info("HELP command -> {}", String.join(" ", e.args()));
}
else {
System.out.println(e.command().toString());
logger.info(e.command().toString());
}
});
Server.Message msg = server.sendCommand(Server.Command.LOGIN, "move");
server.sendCommand(Server.Command.HELP, "test", "test2");
server.sendCommand(Server.Command.BYE);
GlobalEventBus.post(new Events.ServerEvents.command(Server.Command.HELP, "test", "test2"));
GlobalEventBus.post(new Events.ServerEvents.command(Server.Command.BYE));
GlobalEventBus.post(new Events.ServerEvents.changeServerIp("127.1.1.1"));
GlobalEventBus.post(new Events.ServerEvents.changeServerPort("5003"));
server.setBackend(Server.ServerBackend.REMOTE);
System.out.println(msg);
System.out.println(server);
Window.start();
}
/**
* Returns false if any event could not be initialized.
*/
private static boolean initEvents() {
try {
GlobalEventBus.subscribeAndRegister(Events.ServerEvents.OnChangingServerBackend.class, e ->
logger.info("Changing server backend state to {}", e.backend())
);
GlobalEventBus.subscribeAndRegister(Events.ServerEvents.OnChangingServerIp.class, e ->
logger.info("Changing server ip to {}", e.ip())
);
GlobalEventBus.subscribeAndRegister(Events.ServerEvents.OnChangingServerPort.class, e ->
logger.info("Changing server port to {}", e.port())
);
return true;
}
catch (Exception e) {
e.printStackTrace();
return false;
}
}
}

View File

@@ -1,5 +1,9 @@
package org.toop.eventbus;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.toop.Main;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -10,6 +14,8 @@ import java.util.concurrent.CopyOnWriteArrayList;
*/
public class EventRegistry {
private static final Logger logger = LogManager.getLogger(Main.class);
private static final Map<Class<?>, CopyOnWriteArrayList<EventEntry<?>>> eventHistory =
new ConcurrentHashMap<>();
@@ -19,6 +25,7 @@ public class EventRegistry {
* Stores an event in the registry. Safe for concurrent use.
*/
public static <T> void storeEvent(EventMeta<T> eventMeta) {
logger.info("Storing event: {}", eventMeta.toString());
eventHistory
.computeIfAbsent(eventMeta.getType(), k -> new CopyOnWriteArrayList<>())
.add(new EventEntry<>(eventMeta));
@@ -28,6 +35,7 @@ public class EventRegistry {
* Marks a specific event type as ready (safe to post).
*/
public static <T> void markReady(Class<T> type) {
logger.info("Marking event as ready: {}", type.toString());
readyStates.put(type, true);
}
@@ -35,6 +43,7 @@ public class EventRegistry {
* Marks a specific event type as not ready (posting will fail).
*/
public static <T> void markNotReady(Class<T> type) {
logger.info("Marking event as not ready: {}", type.toString());
readyStates.put(type, false);
}
@@ -70,6 +79,7 @@ public class EventRegistry {
* Clears the stored events for a given type.
*/
public static <T> void clearEvents(Class<T> type) {
logger.info("Clearing events: {}", type.toString());
eventHistory.remove(type);
}
@@ -77,6 +87,7 @@ public class EventRegistry {
* Clears all events and resets readiness.
*/
public static void reset() {
logger.info("Resetting event registry events");
eventHistory.clear();
readyStates.clear();
}

View File

@@ -8,6 +8,12 @@ import org.toop.server.Server;
public class Events implements IEvents {
public static class ServerEvents {
/**
* Triggers sending a command to a server.
*/
public record command(Server.Command command, String... args) {}
/**
* Triggers when a command is sent to a server.
*/

View File

@@ -89,6 +89,11 @@ public enum GlobalEventBus {
GlobalEventBus.INSTANCE.get().unregister(event.getEvent());
}
/**
* Wrapper for posting events.
*
* @param event The event to post.
*/
public static <T> void post(T event) {
Class<T> type = (Class<T>) event.getClass();

View File

@@ -156,6 +156,7 @@ public class Server {
}
private void initEvents() {
GlobalEventBus.subscribeAndRegister(Events.ServerEvents.command.class, e -> this.sendCommand(e.command(), e.args()));
GlobalEventBus.subscribeAndRegister(Events.ServerEvents.changeServerIp.class, e -> this.setIp(e.ip()));
GlobalEventBus.subscribeAndRegister(Events.ServerEvents.changeServerPort.class, e -> this.setPort(e.port()));
}

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug" name="AppConfig">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>

View File

@@ -1,50 +1,50 @@
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.toop.server.Server;
import org.toop.server.backend.*;
public class ServerTest {
private Server server;
@Before
public void setUp() {
server = new Server(Server.ServerBackend.LOCAL, "127.0.0.1", "8080");
}
@Test
public void testConstructorSetsValues() {
Assert.assertEquals("127.0.0.1", server.getIp());
Assert.assertEquals("8080", server.getPort());
}
@Test
public void testSetIpUpdatesValue() {
server.setIp("192.168.1.1");
Assert.assertEquals("192.168.1.1", server.getIp());
}
@Test
public void testSetPortUpdatesValue() {
server.setPort("9090");
Assert.assertEquals("9090", server.getPort());
}
@Test
public void testSetLocalBackend() {
Assert.assertEquals(new Local(), server.getBackend());
}
@Test
public void testSetRemoteBackend() {
server.setBackend(Server.ServerBackend.REMOTE);
Assert.assertEquals(new Remote(), server.getBackend());
}
@Test
public void testNotNullAfterConstruction() {
Assert.assertNotNull(server);
}
}
//import org.junit.Assert;
//import org.junit.Before;
//import org.junit.Test;
//import org.toop.server.Server;
//import org.toop.server.backend.*;
//
//public class ServerTest {
//
// private Server server;
//
// @Before
// public void setUp() {
// server = new Server(Server.ServerBackend.LOCAL, "127.0.0.1", "8080");
// }
//
// @Test
// public void testConstructorSetsValues() {
// Assert.assertEquals("127.0.0.1", server.getIp());
// Assert.assertEquals("8080", server.getPort());
// }
//
// @Test
// public void testSetIpUpdatesValue() {
// server.setIp("192.168.1.1");
// Assert.assertEquals("192.168.1.1", server.getIp());
// }
//
// @Test
// public void testSetPortUpdatesValue() {
// server.setPort("9090");
// Assert.assertEquals("9090", server.getPort());
// }
//
// @Test
// public void testSetLocalBackend() {
// Assert.assertEquals(new Local(), server.getBackend());
// }
//
// @Test
// public void testSetRemoteBackend() {
// server.setBackend(Server.ServerBackend.REMOTE);
// Assert.assertEquals(new Remote(), server.getBackend());
// }
//
// @Test
// public void testNotNullAfterConstruction() {
// Assert.assertNotNull(server);
// }
//
//}