42 lines
1.5 KiB
JavaScript
42 lines
1.5 KiB
JavaScript
|
// http://dev.mysql.com/doc/internals/en/com-register-slave.html
|
||
|
// note that documentation is incorrect, for example command code is actually 0x15 but documented as 0x14
|
||
|
|
||
|
var Packet = require('../packets/packet');
|
||
|
var CommandCodes = require('../constants/commands');
|
||
|
|
||
|
function RegisterSlave(opts)
|
||
|
{
|
||
|
this.serverId = opts.serverId || 0;
|
||
|
this.slaveHostname = opts.slaveHostname || '';
|
||
|
this.slaveUser = opts.slaveUser || '';
|
||
|
this.slavePassword = opts.slavePassword || '';
|
||
|
this.slavePort = opts.slavePort || 0;
|
||
|
this.replicationRank = opts.replicationRank || 0;
|
||
|
this.masterId = opts.masterId || 0;
|
||
|
}
|
||
|
|
||
|
RegisterSlave.prototype.toPacket = function()
|
||
|
{
|
||
|
var length = 15 + // TODO: should be ascii?
|
||
|
Buffer.byteLength(this.slaveHostname, 'utf8') +
|
||
|
Buffer.byteLength(this.slaveUser, 'utf8') +
|
||
|
Buffer.byteLength(this.slavePassword, 'utf8') + 3 + 4;
|
||
|
var buffer = new Buffer(length);
|
||
|
var packet = new Packet(0, buffer);
|
||
|
packet.offset = 4;
|
||
|
packet.writeInt8(CommandCodes.REGISTER_SLAVE);
|
||
|
packet.writeInt32(this.serverId);
|
||
|
packet.writeInt8(Buffer.byteLength(this.slaveHostname, 'utf8'));
|
||
|
packet.writeString(this.slaveHostname);
|
||
|
packet.writeInt8(Buffer.byteLength(this.slaveUser, 'utf8'));
|
||
|
packet.writeString(this.slaveUser);
|
||
|
packet.writeInt8(Buffer.byteLength(this.slavePassword, 'utf8'));
|
||
|
packet.writeString(this.slavePassword);
|
||
|
packet.writeInt16(this.slavePort);
|
||
|
packet.writeInt32(this.replicationRank);
|
||
|
packet.writeInt32(this.masterId);
|
||
|
return packet;
|
||
|
};
|
||
|
|
||
|
module.exports = RegisterSlave;
|