in common/protocol/fsof/DubboParser.php [197:226]
private function parseResponseBodyForFastJson(DubboResponse $response)
{
$_data = substr($response->getFullData(), self::PACKAGE_HEDA_LEN);
$response->setResponseBody($_data);
list($status, $content) = explode(PHP_EOL, $_data);
if ($response->isHeartbeatEvent()) {
$response->setResult(json_decode($status, true));
} else {
switch ($status) {
case self::RESPONSE_NULL_VALUE:
break;
case self::RESPONSE_VALUE:
$response->setResult(json_decode($content, true));
break;
case self::RESPONSE_WITH_EXCEPTION:
$exception = json_decode($content, true);
if (is_array($exception) && array_key_exists('message', $exception)) {
throw new ConsumerException($exception['message']);
} else if (is_string($exception)) {
throw new ConsumerException($exception);
} else {
throw new ConsumerException("provider occur error");
}
break;
default:
return false;
}
}
return $response;
}