encode method

  1. @override
Uint8List encode()
override

Codifica o pacote SSL Request em um Uint8List para envio ao servidor.

A codificação segue a especificação do protocolo MySQL:

  1. capabilityFlags (4 bytes, little-endian). Se connectWithDB for true, a flag mysqlCapFlagClientConnectWithDB é ativada.
  2. maxPacketSize (4 bytes, little-endian).
  3. characterSet (1 byte).
  4. 23 bytes de preenchimento (zeros).

Implementation

@override
Uint8List encode() {
  // Se o cliente deseja se conectar com um banco de dados,
  // ativa a flag mysqlCapFlagClientConnectWithDB.
  if (connectWithDB) {
    capabilityFlags = capabilityFlags | mysqlCapFlagClientConnectWithDB;
  }

  final buffer = ByteDataWriter(endian: Endian.little);
  buffer.writeUint32(capabilityFlags);
  buffer.writeUint32(maxPacketSize);
  buffer.writeUint8(characterSet);
  // Escreve 23 bytes de preenchimento com zeros.
  buffer.write(List.filled(23, 0));

  return buffer.toBytes();
}