diffusion
Version:
Diffusion JavaScript client
37 lines (28 loc) • 1.05 kB
JavaScript
var _implements = require('util/interface')._implements;
var Ping = require('../../features/ping');
var Services = require('services/services');
var Emitter = require('events/emitter');
var Result = require('events/result');
module.exports = _implements(Ping, function PingImpl(internal, currentTime) {
currentTime = currentTime || Date.now;
var ping = internal.getServiceLocator().obtain(Services.USER_PING);
this.pingServer = function() {
var emitter = new Emitter();
var result = new Result(emitter);
if (internal.checkConnected(emitter)) {
var start = currentTime();
ping.send(null, function(err) {
if (err) {
emitter.error(err);
} else {
var elapsed = currentTime() - start;
emitter.emit('complete', {
timestamp : start,
rtt : elapsed
});
}
});
}
return result;
};
});