34 lines
984 B
JavaScript
34 lines
984 B
JavaScript
|
'use strict';
|
||
|
|
||
|
// http://dev.mysql.com/doc/internals/en/com-binlog-dump.html#packet-COM_BINLOG_DUMP
|
||
|
|
||
|
const Packet = require('../packets/packet');
|
||
|
const CommandCodes = require('../constants/commands');
|
||
|
|
||
|
// TODO: add flag to constants
|
||
|
// 0x01 - BINLOG_DUMP_NON_BLOCK
|
||
|
// send EOF instead of blocking
|
||
|
class BinlogDump {
|
||
|
constructor(opts) {
|
||
|
this.binlogPos = opts.binlogPos || 0;
|
||
|
this.serverId = opts.serverId || 0;
|
||
|
this.flags = opts.flags || 0;
|
||
|
this.filename = opts.filename || '';
|
||
|
}
|
||
|
|
||
|
toPacket() {
|
||
|
const length = 15 + Buffer.byteLength(this.filename, 'utf8'); // TODO: should be ascii?
|
||
|
const buffer = Buffer.allocUnsafe(length);
|
||
|
const packet = new Packet(0, buffer, 0, length);
|
||
|
packet.offset = 4;
|
||
|
packet.writeInt8(CommandCodes.BINLOG_DUMP);
|
||
|
packet.writeInt32(this.binlogPos);
|
||
|
packet.writeInt16(this.flags);
|
||
|
packet.writeInt32(this.serverId);
|
||
|
packet.writeString(this.filename);
|
||
|
return packet;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = BinlogDump;
|