37 lines
817 B
JavaScript
37 lines
817 B
JavaScript
|
'use strict';
|
||
|
|
||
|
const Command = require('./command');
|
||
|
const CommandCode = require('../constants/commands');
|
||
|
const Packet = require('../packets/packet');
|
||
|
|
||
|
// TODO: time statistics?
|
||
|
// usefull for queue size and network latency monitoring
|
||
|
// store created,sent,reply timestamps
|
||
|
class Ping extends Command {
|
||
|
constructor(callback) {
|
||
|
super();
|
||
|
this.onResult = callback;
|
||
|
}
|
||
|
|
||
|
start(packet, connection) {
|
||
|
const ping = new Packet(
|
||
|
0,
|
||
|
Buffer.from([1, 0, 0, 0, CommandCode.PING]),
|
||
|
0,
|
||
|
5
|
||
|
);
|
||
|
connection.writePacket(ping);
|
||
|
return Ping.prototype.pingResponse;
|
||
|
}
|
||
|
|
||
|
pingResponse() {
|
||
|
// TODO: check it's OK packet. error check already done in caller
|
||
|
if (this.onResult) {
|
||
|
process.nextTick(this.onResult.bind(this));
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = Ping;
|