private function parseResponseBodyForFastJson()

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