processResponse method

  1. @override
HandlerResponse processResponse(
  1. Buffer response
)
override

Parses a Buffer containing the response to the command. Returns a _HandlerResponse. The default implementation returns a finished _HandlerResponse with a result which is obtained by calling checkResponse

Implementation

@override
HandlerResponse processResponse(Buffer response) {
  log.fine('Prepare processing response');
  var packet = checkResponse(response, true);
  if (packet == null) {
    log.fine('Not an OK packet, params to read: $_parametersToRead');
    if (_parametersToRead > -1) {
      if (response[0] == PACKET_EOF) {
        log.fine('EOF');
        if (_parametersToRead != 0) {
          throw createMySqlProtocolError(
              'Unexpected EOF packet; was expecting another $_parametersToRead parameter(s)');
        }
      } else {
        var fieldPacket = Field(response);
        log.fine('field packet: $fieldPacket');
        _parameters[_okPacket.parameterCount - _parametersToRead] =
            fieldPacket;
      }
      _parametersToRead--;
    } else if (_columnsToRead > -1) {
      if (response[0] == PACKET_EOF) {
        log.fine('EOF');
        if (_columnsToRead != 0) {
          throw createMySqlProtocolError(
              'Unexpected EOF packet; was expecting another $_columnsToRead column(s)');
        }
      } else {
        var fieldPacket = Field(response);
        log.fine('field packet (column): $fieldPacket');
        _columns[_okPacket.columnCount - _columnsToRead] = fieldPacket;
      }
      _columnsToRead--;
    }
  } else if (packet is PrepareOkPacket) {
    log.fine(packet.toString());
    _okPacket = packet;
    _parametersToRead = packet.parameterCount;
    _columnsToRead = packet.columnCount;
    _parameters = List<Field?>.filled(_parametersToRead, null);
    _columns = List<Field?>.filled(_columnsToRead, null);
    if (_parametersToRead == 0) {
      _parametersToRead = -1;
    }
    if (_columnsToRead == 0) {
      _columnsToRead = -1;
    }
  }

  if (_parametersToRead == -1 && _columnsToRead == -1) {
    log.fine('finished');
    return HandlerResponse(finished: true, result: PreparedQuery(this));
  }
  return HandlerResponse.notFinished;
}