createRequest method
Returns a Buffer containing the command packet.
Implementation
@override
Buffer createRequest() {
// calculate the mysql password hash
var hash = getHash();
var encodedUsername = username == null ? <int>[] : utf8.encode(username!);
late List<int> encodedDb;
var encodedAuth = <int>[];
var size = hash.length + encodedUsername.length + 2 + 32;
var clientFlags = this.clientFlags;
if (db != null) {
encodedDb = utf8.encode(db!);
size += encodedDb.length + 1;
clientFlags |= CLIENT_CONNECT_WITH_DB;
}
if (clientFlags & CLIENT_PLUGIN_AUTH > 0) {
encodedAuth = utf8.encode(authPluginToString(authPlugin));
size += encodedAuth.length + 1;
}
var buffer = Buffer(size);
buffer.seekWrite(0);
buffer.writeUint32(clientFlags);
buffer.writeUint32(maxPacketSize);
buffer.writeByte(characterSet);
buffer.fill(23, 0);
buffer.writeNullTerminatedList(encodedUsername);
buffer.writeByte(hash.length);
buffer.writeList(hash);
if (db != null) {
buffer.writeNullTerminatedList(encodedDb);
}
if (encodedAuth.isNotEmpty) {
buffer.writeNullTerminatedList(encodedAuth);
}
return buffer;
}