diffusion
Version:
Diffusion JavaScript client
51 lines (46 loc) • 1.54 kB
JavaScript
/*eslint valid-jsdoc: "off"*/
/**
* Activity monitor for session.
* @param connectionActivityMonitorFactory Factory for connection activity monitors
*/
function SessionActivityMonitor(connectionActivityMonitorFactory) {
var currentConnectionMonitor = null;
/**
* Called when a new connection has been opened by the session.
* @param connection The new connection
* @param response The new connection response
*/
this.onNewConnection = function(connection, response) {
currentConnectionMonitor = connectionActivityMonitorFactory(connection, response);
};
/**
* Called when the current connection has been closed, either cleanly or because of a problem.
*/
this.onConnectionClosed = function() {
if (currentConnectionMonitor !== null) {
currentConnectionMonitor.shutdown();
currentConnectionMonitor = null;
}
};
/**
* Called when a system ping is received from the server.
*/
this.onSystemPing = function() {
if (currentConnectionMonitor !== null) {
currentConnectionMonitor.onSystemPing();
}
};
}
module.exports = {
/**
* Null object implementation of Session activity monitor.
*/
NOOP : {
onNewConnection : function() {},
onConnectionClosed : function() {},
onSystemPing : function() {}
},
create : function(connectionActivityMonitorFactory) {
return new SessionActivityMonitor(connectionActivityMonitorFactory);
}
};