Spaces:
Running
Running
; | |
// http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::AuthSwitchRequest | |
const Packet = require('../packets/packet'); | |
class AuthSwitchRequest { | |
constructor(opts) { | |
this.pluginName = opts.pluginName; | |
this.pluginData = opts.pluginData; | |
} | |
toPacket() { | |
const length = 6 + this.pluginName.length + this.pluginData.length; | |
const buffer = Buffer.allocUnsafe(length); | |
const packet = new Packet(0, buffer, 0, length); | |
packet.offset = 4; | |
packet.writeInt8(0xfe); | |
// TODO: use server encoding | |
packet.writeNullTerminatedString(this.pluginName, 'cesu8'); | |
packet.writeBuffer(this.pluginData); | |
return packet; | |
} | |
static fromPacket(packet) { | |
packet.readInt8(); // marker | |
// assert marker == 0xfe? | |
// TODO: use server encoding | |
const name = packet.readNullTerminatedString('cesu8'); | |
const data = packet.readBuffer(); | |
return new AuthSwitchRequest({ | |
pluginName: name, | |
pluginData: data | |
}); | |
} | |
} | |
module.exports = AuthSwitchRequest; | |