MySQLPacketOK.decode constructor

MySQLPacketOK.decode(
  1. Uint8List buffer
)

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

A decodificação segue a seguinte estrutura:

  1. Header: 1 byte, que deve ser 0x00.
  2. Affected Rows: Valor length-encoded, representando o número de linhas afetadas.
  3. Last Insert ID: Valor length-encoded, representando o último ID gerado.

O método utiliza a função getVariableEncInt para decodificar os valores length-encoded.

Implementation

factory MySQLPacketOK.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 número de linhas afetadas (length-encoded integer)
  final affectedRows = byteData.getVariableEncInt(offset);
  offset += affectedRows.item2;

  // 3) Leitura do último ID inserido (length-encoded integer)
  final lastInsertID = byteData.getVariableEncInt(offset);
  offset += lastInsertID.item2;

  return MySQLPacketOK(
    header: header,
    affectedRows: affectedRows.item1,
    lastInsertID: lastInsertID.item1,
  );
}