createRequest method

  1. @override
Buffer createRequest()
override

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