DiscofyAPI/node_modules/mariadb/lib/cmd/ping.js

53 lines
1.2 KiB
JavaScript

'use strict';
const Command = require('./command');
const Errors = require('../misc/errors');
/**
* send a COM_PING: permits sending a packet containing one byte to check that the connection is active.
* see https://mariadb.com/kb/en/library/com_ping/
*/
class Ping extends Command {
constructor(resolve, reject) {
super(resolve, reject);
}
start(out, opts, info) {
out.startPacket(this);
out.writeInt8(0x0e);
out.flushBuffer(true);
this.emit('send_end');
this.onPacketReceive = this.readPingResponsePacket;
}
/**
* Read ping response packet.
* packet can be :
* - an ERR_Packet
* - a OK_Packet
*
* @param packet query response
* @param out output writer
* @param opts connection options
* @param info connection info
*/
readPingResponsePacket(packet, out, opts, info) {
if (packet.peek() !== 0x00) {
return this.throwNewError(
'unexpected packet',
false,
info,
'42000',
Errors.ER_PING_BAD_PACKET
);
}
packet.skip(1); //skip header
packet.skipLengthCodedNumber(); //affected rows
packet.skipLengthCodedNumber(); //insert ids
info.status = packet.readUInt16();
this.successEnd(null);
}
}
module.exports = Ping;