processResponse method
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;
}