Files
lcbp3.np-dms.work/backend/node_modules/mariadb/lib/cmd/ping.js
2025-09-21 20:29:15 +07:00

52 lines
1.4 KiB
JavaScript
Executable File

// SPDX-License-Identifier: LGPL-2.1-or-later
// Copyright (c) 2015-2024 MariaDB Corporation Ab
'use strict';
const Command = require('./command');
const ServerStatus = require('../const/server-status');
const PING_COMMAND = new Uint8Array([1, 0, 0, 0, 0x0e]);
/**
* 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(cmdParam, resolve, reject) {
super(cmdParam, resolve, reject);
}
start(out, opts, info) {
if (opts.logger.query) opts.logger.query('PING');
this.onPacketReceive = this.readPingResponsePacket;
out.fastFlush(this, PING_COMMAND);
this.emit('send_end');
}
/**
* Read ping response packet.
* packet can be :
* - an ERR_Packet
* - an OK_Packet
*
* @param packet query response
* @param out output writer
* @param opts connection options
* @param info connection info
*/
readPingResponsePacket(packet, out, opts, info) {
packet.skip(1); //skip header
packet.skipLengthCodedNumber(); //affected rows
packet.skipLengthCodedNumber(); //insert ids
info.status = packet.readUInt16();
if (info.redirectRequest && (info.status & ServerStatus.STATUS_IN_TRANS) === 0) {
info.redirect(info.redirectRequest, this.successEnd.bind(this, null));
} else {
this.successEnd(null);
}
}
}
module.exports = Ping;