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 offset = 4;
  final byteData = ByteData.sublistView(buffer);
  final payloadLength = header.item1;
  final type = byteData.getUint8(offset);

  late MySQLPacketPayload payload;
  if (type == 0x00 && payloadLength >= 7) {
    payload = MySQLPacketOK.decode(
      Uint8List.sublistView(buffer, offset),
    );
  } else if (type == 0xfe && payloadLength < 9) {
    payload = MySQLPacketEOF.decode(
      Uint8List.sublistView(buffer, offset),
    );
  } else if (type == 0xff) {
    payload = MySQLPacketError.decode(
      Uint8List.sublistView(buffer, offset),
    );
  } else if (type == 0x01) {
    // Extra Auth Data
    payload = MySQLPacketExtraAuthData.decode(
      Uint8List.sublistView(buffer, offset),
    );
  } else {
    throw MySQLProtocolException("Unsupported generic packet: $buffer");
  }

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