MySQLPacket.decodeGenericPacket constructor

MySQLPacket.decodeGenericPacket(
  1. Uint8List buffer
)

Decodifica um pacote genérico, podendo ser OK, EOF, ERROR, etc.

Implementation

factory MySQLPacket.decodeGenericPacket(Uint8List buffer) {
  final header = decodePacketHeader(buffer);
  final payloadBytes = _extractPayload(buffer, header.$1);
  final payloadLength = payloadBytes.length;
  final type = payloadBytes[0];

  late MySQLPacketPayload payload;
  if (type == 0x00 && payloadLength >= 7) {
    payload = MySQLPacketOK.decode(payloadBytes);
  } else if (type == 0xfe && payloadLength < 9) {
    payload = MySQLPacketEOF.decode(payloadBytes);
  } else if (type == 0xff) {
    payload = MySQLPacketError.decode(payloadBytes);
  } else if (type == 0x01) {
    // Extra Auth Data
    payload = MySQLPacketExtraAuthData.decode(payloadBytes);
  } else {
    throw MySQLProtocolException(
      'Unsupported generic packet type 0x${type.toRadixString(16)} '
      '(payload length $payloadLength)',
    );
  }

  return MySQLPacket(
    sequenceID: header.$2,
    payloadLength: payloadLength,
    payload: payload,
  );
}