123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- 'use strict';
- const Queue = require('denque');
- const _addPacket = function (msg) {
- this.lastPackets.push(msg);
- while (this.lastPackets.size() > 32) this.lastPackets.shift();
- };
- const _getLastPackets = function () {
- let output = '';
- let packet;
- while ((packet = this.lastPackets.shift())) {
- output += '\n' + packet;
- }
- return output;
- };
- class ConnectionInformation {
- constructor() {
- this.threadId = -1;
- this.status = null;
- this.serverVersion = null;
- this.serverCapabilities = null;
- }
- addPacket(msg) {}
- getLastPackets() {
- return '';
- }
- enableLogPacket() {
- this.lastPackets = new Queue();
- this.addPacket = _addPacket.bind(this);
- this.getLastPackets = _getLastPackets.bind(this);
- }
- hasMinVersion(major, minor, patch) {
- if (!this.serverVersion)
- throw new Error('cannot know if server version until connection is established');
- if (!major) throw new Error('a major version must be set');
- if (!minor) minor = 0;
- if (!patch) patch = 0;
- let ver = this.serverVersion;
- return (
- ver.major > major ||
- (ver.major === major && ver.minor > minor) ||
- (ver.major === major && ver.minor === minor && ver.patch >= patch)
- );
- }
- isMariaDB() {
- if (!this.serverVersion)
- throw new Error('cannot know if server is MariaDB until connection is established');
- return this.serverVersion.mariaDb;
- }
- /**
- * Parse raw info to set server major/minor/patch values
- * @param info
- */
- static parseVersionString(info) {
- let car;
- let offset = 0;
- let type = 0;
- let val = 0;
- for (; offset < info.serverVersion.raw.length; offset++) {
- car = info.serverVersion.raw.charCodeAt(offset);
- if (car < 48 || car > 57) {
- switch (type) {
- case 0:
- info.serverVersion.major = val;
- break;
- case 1:
- info.serverVersion.minor = val;
- break;
- case 2:
- info.serverVersion.patch = val;
- return;
- }
- type++;
- val = 0;
- } else {
- val = val * 10 + car - 48;
- }
- }
- //serverVersion finished by number like "5.5.57", assign patchVersion
- if (type === 2) info.serverVersion.patch = val;
- }
- }
- module.exports = ConnectionInformation;
|