Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions src/main/java/net/sharksystem/hub/hubside/metrics/HubLogger.java
Original file line number Diff line number Diff line change
@@ -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);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
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;
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<CharSequence> getRegisteredPeers() {
return hubDelegate.getRegisteredPeers();
}

@Override
public boolean isRegistered(CharSequence peerID) {
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) {
this.hubDelegate = hubDelegate;
}
}