From f5a6d5c2700c7ba1e05e082a6743cd79545be770 Mon Sep 17 00:00:00 2001 From: "theo.selpin" Date: Fri, 19 Jun 2026 16:36:21 +0200 Subject: [PATCH 1/2] 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/2] 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) {