in common/protocol/fsof/DubboParser.php [310:339]
public function packResponse(DubboResponse &$response)
{
if ($response->getStatus() != DubboResponse::OK) {
$resData = json_encode($response->getErrorMsg());
} else {
if ($response->getErrorMsg() != NULL && $response->getErrorMsg() != "") {
$resData = json_encode(self::RESPONSE_WITH_EXCEPTION) . PHP_EOL . json_encode($response->getErrorMsg());
} else if ($response->getResult() == NULL) {
$resData = json_encode(self::RESPONSE_NULL_VALUE);
} else {
$resData = json_encode(self::RESPONSE_VALUE) . PHP_EOL . json_encode($response->getResult());
}
}
$resData = $resData . PHP_EOL;
$upper = ($response->getSn() & self::UPPER_MASK) >> 32;
$lower = $response->getSn() & self::LOWER_MASK;
$flag = self::DUBBO_PROTOCOL_SERIALIZE_FAST_JSON;
if ($response->isHeartbeatEvent()) {
$flag |= self::FLAG_HEARTBEAT_EVENT;
}
$out = pack("n1C1C1N1N1N1",
self::DUBBO_PROTOCOL_MAGIC,
$flag,
$response->getStatus(),
$upper,
$lower,
strlen($resData));
return $out . $resData;
}