MySQLPacketAuthSwitchRequest.decode constructor

MySQLPacketAuthSwitchRequest.decode(
  1. Uint8List buffer
)

Decodifica um Uint8List recebido do servidor e cria uma instância de MySQLPacketAuthSwitchRequest.

O formato esperado do buffer é:

  1. Header: 1 byte.
  2. authPluginName: string terminada em null (utiliza getUtf8NullTerminatedString).
  3. authPluginData: o restante do buffer.

Implementation

factory MySQLPacketAuthSwitchRequest.decode(Uint8List buffer) {
  final byteData = ByteData.sublistView(buffer);
  int offset = 0;

  // 1) Leitura do header (1 byte)
  final header = byteData.getUint8(offset);
  offset += 1;

  // 2) Leitura do nome do plugin de autenticação (string null-terminated)
  final authPluginName = buffer.getUtf8NullTerminatedString(offset);
  offset += authPluginName.item2;

  // 3) O restante do buffer corresponde aos dados do plugin
  final authPluginData = Uint8List.sublistView(buffer, offset);

  return MySQLPacketAuthSwitchRequest(
    header: header,
    authPluginData: authPluginData,
    authPluginName: authPluginName.item1,
  );
}