From f5a6d5c2700c7ba1e05e082a6743cd79545be770 Mon Sep 17 00:00:00 2001 From: "theo.selpin" Date: Fri, 19 Jun 2026 16:36:21 +0200 Subject: [PATCH 1/3] add HubMetricsDecorator class in metrics package --- .../hubside/metrics/HubMetricsDecorator.java | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 src/main/java/net/sharksystem/hub/hubside/metrics/HubMetricsDecorator.java diff --git a/src/main/java/net/sharksystem/hub/hubside/metrics/HubMetricsDecorator.java b/src/main/java/net/sharksystem/hub/hubside/metrics/HubMetricsDecorator.java new file mode 100644 index 0000000..aaad09a --- /dev/null +++ b/src/main/java/net/sharksystem/hub/hubside/metrics/HubMetricsDecorator.java @@ -0,0 +1,78 @@ +package net.sharksystem.hub.hubside.metrics; + +import net.sharksystem.hub.ASAPHubException; +import net.sharksystem.hub.hubside.ConnectorInternal; +import net.sharksystem.hub.hubside.HubInternal; +import net.sharksystem.utils.streams.StreamPair; + +import java.io.IOException; +import java.util.Set; + +/** + * HubMetricsDecorator is a class that can decorate + * any object that implements HubInternal. It acts + * as a man-in-the-middle and relays hub method calls + * without any changes and side effects. This decorator + * implements the same interface (HubInternal) as the class + * it decorates. + */ +public class HubMetricsDecorator implements HubInternal { + + /** + * hubDelegate is the concrete hub instance to be + * decorated. Incoming method calls to this decorator + * instance will be relayed to this delegate instance + * without changed parameters or interfering with the + * delegate in any way. + */ + private final HubInternal hubDelegate; + + @Override + public void register(CharSequence peerId, ConnectorInternal hubConnectorSession) { + + } + + @Override + public void register(CharSequence peerId, ConnectorInternal hubConnectorSession, boolean canCreateTCPConnections) { + + } + + @Override + public void unregister(CharSequence peerId) { + + } + + @Override + public Set getRegisteredPeers() { + return Set.of(); + } + + @Override + public boolean isRegistered(CharSequence peerID) { + return false; + } + + @Override + public void connectionRequest(CharSequence sourcePeerID, CharSequence targetPeerID, int timeout) throws ASAPHubException, IOException { + + } + + @Override + public void disconnect(CharSequence sourcePeerID, CharSequence targetPeerID) throws ASAPHubException { + + } + + @Override + public void startDataSession(CharSequence sourcePeerID, CharSequence targetPeerID, StreamPair connection, int timeout) throws ASAPHubException, IOException { + + } + + @Override + public void notifyConnectionEnded(CharSequence sourcePeerID, CharSequence targetPeerID, StreamPair connection) throws ASAPHubException { + + } + + public HubMetricsDecorator(HubInternal hubDelegate) { + this.hubDelegate = hubDelegate; + } +} From fc15b7c55258ffddb7295db7833f22c7657f1d4e Mon Sep 17 00:00:00 2001 From: "mika-f1@web.de" Date: Sat, 18 Jul 2026 17:44:09 +0200 Subject: [PATCH 2/3] MetricsDecorater implemented HUbLogger implemented --- .../hub/hubside/metrics/HubLogger.java | 61 +++++++++++++++++++ .../hubside/metrics/HubMetricsDecorator.java | 26 +++++--- 2 files changed, 78 insertions(+), 9 deletions(-) create mode 100644 src/main/java/net/sharksystem/hub/hubside/metrics/HubLogger.java diff --git a/src/main/java/net/sharksystem/hub/hubside/metrics/HubLogger.java b/src/main/java/net/sharksystem/hub/hubside/metrics/HubLogger.java new file mode 100644 index 0000000..b41f747 --- /dev/null +++ b/src/main/java/net/sharksystem/hub/hubside/metrics/HubLogger.java @@ -0,0 +1,61 @@ +package net.sharksystem.hub.hubside.metrics; + +import net.sharksystem.utils.Log; + +public class HubLogger { + + public void logWrite(String logMessage){ + System.out.println(logMessage); + } + + public void writeRegister(CharSequence peerId, boolean canCreateTCPConnections) { + String logMessage = + "[REGISTER] peerId:" + peerId + + "; canCreateTCPConnections:" + canCreateTCPConnections + + " [/REGISTER]"; + logWrite(logMessage); + } + + public void writeUnregister(CharSequence peerId) { + String logMessage = + "[UNREGISTER] peerId:" + peerId + + " [/UNREGISTER]"; + logWrite(logMessage); + } + + public void writeStartDataSession(CharSequence source, CharSequence target, long timeStart, int timeout) { + String logMessage = + "[START_DATA_SESSION] source:" + source + + "; target:" + target + + "; timeStart:" + timeStart + + "; timeout:" + timeout + + " [/START_DATA_SESSION]"; + logWrite(logMessage); + } + + public void writeConnectionRequested(CharSequence source, CharSequence target, int timeout) { + String logMessage = + "[CONNECTION_REQUEST] source:" + source + + "; target:" + target + + "; timeout:" + timeout + + " [/CONNECTION_REQUEST]"; + logWrite(logMessage); + } + + public void writeConnectionEnded(CharSequence source, CharSequence target, long timeEnd) { + String logMessage = + "[NOTIFY_CONNECTION_ENDED] source:" + source + + "; target:" + target + + "; timeEnd:" + timeEnd + + " [/NOTIFY_CONNECTION_ENDED]"; + logWrite(logMessage); + } + + public void writeDisconnected(CharSequence source, CharSequence target) { + String logMessage = + "[DISCONNECT] source:" + source + + "; target:" + target + + " [/DISCONNECT]"; + logWrite(logMessage); + } +} diff --git a/src/main/java/net/sharksystem/hub/hubside/metrics/HubMetricsDecorator.java b/src/main/java/net/sharksystem/hub/hubside/metrics/HubMetricsDecorator.java index aaad09a..73bdffe 100644 --- a/src/main/java/net/sharksystem/hub/hubside/metrics/HubMetricsDecorator.java +++ b/src/main/java/net/sharksystem/hub/hubside/metrics/HubMetricsDecorator.java @@ -26,50 +26,58 @@ public class HubMetricsDecorator implements HubInternal { * delegate in any way. */ private final HubInternal hubDelegate; + private final HubLogger logger = new HubLogger(); @Override public void register(CharSequence peerId, ConnectorInternal hubConnectorSession) { - + //logger.writeRegister(peerID); + hubDelegate.register(peerId, hubConnectorSession); } @Override public void register(CharSequence peerId, ConnectorInternal hubConnectorSession, boolean canCreateTCPConnections) { - + logger.writeRegister(peerId, canCreateTCPConnections); + hubDelegate.register(peerId, hubConnectorSession, canCreateTCPConnections); } @Override public void unregister(CharSequence peerId) { - + logger.writeUnregister(peerId); + hubDelegate.unregister(peerId); } @Override public Set getRegisteredPeers() { - return Set.of(); + return hubDelegate.getRegisteredPeers(); } @Override public boolean isRegistered(CharSequence peerID) { - return false; + return hubDelegate.isRegistered(peerID); } @Override public void connectionRequest(CharSequence sourcePeerID, CharSequence targetPeerID, int timeout) throws ASAPHubException, IOException { - + logger.writeConnectionRequested(sourcePeerID, targetPeerID, timeout); + hubDelegate.connectionRequest(sourcePeerID, targetPeerID, timeout); } @Override public void disconnect(CharSequence sourcePeerID, CharSequence targetPeerID) throws ASAPHubException { - + logger.writeDisconnected(sourcePeerID, targetPeerID); + hubDelegate.disconnect(sourcePeerID, targetPeerID); } @Override public void startDataSession(CharSequence sourcePeerID, CharSequence targetPeerID, StreamPair connection, int timeout) throws ASAPHubException, IOException { - + logger.writeStartDataSession(sourcePeerID, targetPeerID, System.currentTimeMillis(), timeout); + hubDelegate.startDataSession(sourcePeerID, targetPeerID, connection, timeout); } @Override public void notifyConnectionEnded(CharSequence sourcePeerID, CharSequence targetPeerID, StreamPair connection) throws ASAPHubException { - + logger.writeConnectionEnded(sourcePeerID, targetPeerID, System.currentTimeMillis()); + hubDelegate.notifyConnectionEnded(sourcePeerID, targetPeerID, connection); } public HubMetricsDecorator(HubInternal hubDelegate) { From f2eaaff821c379b7ea04f0711b7db54ff2bac184 Mon Sep 17 00:00:00 2001 From: "mika-f1@web.de" Date: Tue, 20 Oct 2026 00:10:22 +0200 Subject: [PATCH 3/3] Letzter Stand des Asap Hub Logger --- .../hub/hubside/HubSingleEntityMetrics.java | 70 +++++++++++++++++++ .../hubside/HubSingleEntitySharedChannel.java | 2 +- .../hub/hubside/metrics/HubLogger.java | 12 ++-- .../hubside/metrics/HubMetricsDecorator.java | 3 +- 4 files changed, 79 insertions(+), 8 deletions(-) create mode 100644 src/main/java/net/sharksystem/hub/hubside/HubSingleEntityMetrics.java diff --git a/src/main/java/net/sharksystem/hub/hubside/HubSingleEntityMetrics.java b/src/main/java/net/sharksystem/hub/hubside/HubSingleEntityMetrics.java new file mode 100644 index 0000000..f7e7fef --- /dev/null +++ b/src/main/java/net/sharksystem/hub/hubside/HubSingleEntityMetrics.java @@ -0,0 +1,70 @@ +package net.sharksystem.hub.hubside; + +import net.sharksystem.hub.ASAPHubException; +import net.sharksystem.hub.hubside.metrics.HubLogger; +import net.sharksystem.utils.streams.StreamPair; + +import java.io.IOException; +import java.util.Set; + +/** + * Use this Class as a parent class instead of HubSingleEntity when wanting to use the metrics analyzing tool. + */ + +public abstract class HubSingleEntityMetrics extends HubSingleEntity{ + + private final HubLogger logger = new HubLogger(); + + @Override + public void register(CharSequence peerId, ConnectorInternal hubConnectorSession) { + //logger.writeRegister(peerID); + super.register(peerId, hubConnectorSession); + } + + @Override + public void register(CharSequence peerId, ConnectorInternal hubConnectorSession, boolean canCreateTCPConnections) { + logger.writeRegister(peerId, canCreateTCPConnections); + super.register(peerId, hubConnectorSession, canCreateTCPConnections); + } + + @Override + public void unregister(CharSequence peerId) { + logger.writeUnregister(peerId); + super.unregister(peerId); + } + + @Override + public Set getRegisteredPeers() { + return super.getRegisteredPeers(); + } + + @Override + public boolean isRegistered(CharSequence peerID) { + return super.isRegistered(peerID); + } + + @Override + public void connectionRequest(CharSequence sourcePeerID, CharSequence targetPeerID, int timeout) throws ASAPHubException, IOException { + logger.writeConnectionRequested(sourcePeerID, targetPeerID, timeout); + super.connectionRequest(sourcePeerID, targetPeerID, timeout); + } + + @Override + public void disconnect(CharSequence sourcePeerID, CharSequence targetPeerID) throws ASAPHubException { + logger.writeDisconnected(sourcePeerID, targetPeerID); + super.disconnect(sourcePeerID, targetPeerID); + } + + @Override + public void startDataSession(CharSequence sourcePeerID, CharSequence targetPeerID, StreamPair connection, int timeout) throws ASAPHubException, IOException { + logger.writeStartDataSession(sourcePeerID, targetPeerID, System.currentTimeMillis(), timeout); + super.startDataSession(sourcePeerID, targetPeerID, connection, timeout); + } + + @Override + public void notifyConnectionEnded(CharSequence sourcePeerID, CharSequence targetPeerID, StreamPair connection) throws ASAPHubException { + logger.writeConnectionEnded(sourcePeerID, targetPeerID, System.currentTimeMillis()); + super.notifyConnectionEnded(sourcePeerID, targetPeerID, connection); + } +} + diff --git a/src/main/java/net/sharksystem/hub/hubside/HubSingleEntitySharedChannel.java b/src/main/java/net/sharksystem/hub/hubside/HubSingleEntitySharedChannel.java index 2a733b4..f26f405 100644 --- a/src/main/java/net/sharksystem/hub/hubside/HubSingleEntitySharedChannel.java +++ b/src/main/java/net/sharksystem/hub/hubside/HubSingleEntitySharedChannel.java @@ -10,7 +10,7 @@ /** * Implements hub as a single entity to which connectors can connect. */ -public class HubSingleEntitySharedChannel extends HubSingleEntity implements NewConnectionCreatorListener { +public class HubSingleEntitySharedChannel extends HubSingleEntityMetrics implements NewConnectionCreatorListener { /** * Method is called on the hub by a connector and asks for connection to another peer via its connector. In a * decentralized system like this - look for a registered connector and relay the request. source and target diff --git a/src/main/java/net/sharksystem/hub/hubside/metrics/HubLogger.java b/src/main/java/net/sharksystem/hub/hubside/metrics/HubLogger.java index b41f747..1f177dc 100644 --- a/src/main/java/net/sharksystem/hub/hubside/metrics/HubLogger.java +++ b/src/main/java/net/sharksystem/hub/hubside/metrics/HubLogger.java @@ -12,14 +12,14 @@ public void writeRegister(CharSequence peerId, boolean canCreateTCPConnections) String logMessage = "[REGISTER] peerId:" + peerId + "; canCreateTCPConnections:" + canCreateTCPConnections + - " [/REGISTER]"; + "; [/REGISTER]"; logWrite(logMessage); } public void writeUnregister(CharSequence peerId) { String logMessage = "[UNREGISTER] peerId:" + peerId + - " [/UNREGISTER]"; + "; [/UNREGISTER]"; logWrite(logMessage); } @@ -29,7 +29,7 @@ public void writeStartDataSession(CharSequence source, CharSequence target, long "; target:" + target + "; timeStart:" + timeStart + "; timeout:" + timeout + - " [/START_DATA_SESSION]"; + "; [/START_DATA_SESSION]"; logWrite(logMessage); } @@ -38,7 +38,7 @@ public void writeConnectionRequested(CharSequence source, CharSequence target, i "[CONNECTION_REQUEST] source:" + source + "; target:" + target + "; timeout:" + timeout + - " [/CONNECTION_REQUEST]"; + "; [/CONNECTION_REQUEST]"; logWrite(logMessage); } @@ -47,7 +47,7 @@ public void writeConnectionEnded(CharSequence source, CharSequence target, long "[NOTIFY_CONNECTION_ENDED] source:" + source + "; target:" + target + "; timeEnd:" + timeEnd + - " [/NOTIFY_CONNECTION_ENDED]"; + "; [/NOTIFY_CONNECTION_ENDED]"; logWrite(logMessage); } @@ -55,7 +55,7 @@ public void writeDisconnected(CharSequence source, CharSequence target) { String logMessage = "[DISCONNECT] source:" + source + "; target:" + target + - " [/DISCONNECT]"; + "; [/DISCONNECT]"; logWrite(logMessage); } } diff --git a/src/main/java/net/sharksystem/hub/hubside/metrics/HubMetricsDecorator.java b/src/main/java/net/sharksystem/hub/hubside/metrics/HubMetricsDecorator.java index 73bdffe..0f9e56f 100644 --- a/src/main/java/net/sharksystem/hub/hubside/metrics/HubMetricsDecorator.java +++ b/src/main/java/net/sharksystem/hub/hubside/metrics/HubMetricsDecorator.java @@ -2,6 +2,7 @@ import net.sharksystem.hub.ASAPHubException; import net.sharksystem.hub.hubside.ConnectorInternal; +import net.sharksystem.hub.hubside.HubGenericImpl; import net.sharksystem.hub.hubside.HubInternal; import net.sharksystem.utils.streams.StreamPair; @@ -16,7 +17,7 @@ * implements the same interface (HubInternal) as the class * it decorates. */ -public class HubMetricsDecorator implements HubInternal { +public abstract class HubMetricsDecorator extends HubGenericImpl { /** * hubDelegate is the concrete hub instance to be