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;
 |