MySQLPacketError.decode constructor

MySQLPacketError.decode(
  1. Uint8List buffer
)

Decodifica um buffer Uint8List recebido do servidor e retorna uma instância de MySQLPacketError.

O formato esperado do buffer é:

  1. Header: 1 byte (geralmente 0xff).
  2. Error code: 2 bytes.
  3. SQL state marker e SQL state: 1 + 5 bytes (total de 6 bytes, ignorados).
  4. Error message: o restante do buffer é interpretado como uma string UTF-8.

Implementation

factory MySQLPacketError.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 código de erro (2 bytes)
  final errorCode = byteData.getInt2(offset);
  offset += 2;

  // 3) Pula o marcador de SQL state e o SQL state (1 + 5 bytes = 6 bytes)
  offset += 6;

  // 4) O restante do buffer corresponde à mensagem de erro
  final errorMessage = buffer.getUtf8StringEOF(offset);

  return MySQLPacketError(
    header: header,
    errorCode: errorCode,
    errorMessage: errorMessage,
  );
}