private function checkResponse($response, $responseToken, $token, $query = null) { if (!isset($response['t'])) { throw new RqlDriverError("Response message has no type."); } if ($response['t'] == pb\Response_ResponseType::PB_CLIENT_ERROR) { throw new RqlDriverError("Server says PHP-RQL is buggy: " . $response['r'][0]); } if ($responseToken != $token) { throw new RqlDriverError("Received wrong token. Response does not match the request. Expected {$token}, received " . $responseToken); } if ($response['t'] == pb\Response_ResponseType::PB_COMPILE_ERROR) { $backtrace = null; if (isset($response['b'])) { $backtrace = Backtrace::_fromJSON($response['b']); } throw new RqlServerError("Compile error: " . $response['r'][0], $query, $backtrace); } else { if ($response['t'] == pb\Response_ResponseType::PB_RUNTIME_ERROR) { $backtrace = null; if (isset($response['b'])) { $backtrace = Backtrace::_fromJSON($response['b']); } throw new RqlServerError("Runtime error: " . $response['r'][0], $query, $backtrace); } } }