in src/Apache/Ignite/Internal/Connection/ClientSocket.php [175:204]
private function processResponse(Request $request): void
{
$buffer = new MessageBuffer(0);
$this->receive($buffer, BinaryUtils::getSize(ObjectType::INTEGER));
// Response length
$length = $buffer->readInteger();
$this->receive($buffer, $length + BinaryUtils::getSize(ObjectType::INTEGER));
if ($request->isHandshake()) {
$this->processHandshake($buffer);
} else {
// Request id
$requestId = $buffer->readLong();
if (!BinaryUtils::floatEquals($requestId, $request->getId())) {
BinaryUtils::internalError('Invalid response id: ' . $requestId);
}
// Status code
$isSuccess = ($buffer->readInteger() === ClientSocket::REQUEST_SUCCESS_STATUS_CODE);
if (!$isSuccess) {
// Error message
$errMessage = BinaryCommunicator::readString($buffer);
throw new OperationException($errMessage);
} else {
$payloadReader = $request->getPayloadReader();
if ($payloadReader) {
call_user_func($payloadReader, $buffer);
}
}
}
$this->logMessage($request->getId(), false, $buffer);
}