router->Branch_search($request);
if (!($node instanceof Node)) {
throw new RequestException('
HTTP 404 Not Found
Powered by Swoole', 404);
}
if (!(($psr7Response = $node->dispatch($request)) instanceof ResponseInterface)) {
$psr7Response = $this->transferToResponse($psr7Response);
}
} catch (Error | \Throwable $exception) {
$psr7Response = $this->exceptionHandler->emit($exception, $this->response);
} finally {
if (!isset($psr7Response)) {
return;
}
$this->responseEmitter->sender($response, $psr7Response);
$this->eventDispatch->dispatch(new OnAfterRequest());
}
}
/**
* @param mixed $responseData
* @return ResponseInterface
* @throws Exception
*/
private function transferToResponse(mixed $responseData): mixed
{
$interface = $this->response->withStatus(200);
if (!$interface->hasContentType()) {
$interface->withContentType(MsgResponse::CONTENT_TYPE_JSON);
}
$responseData = $interface->_toArray($responseData);
if ($interface->getContentType() == MsgResponse::CONTENT_TYPE_XML) {
$interface->stream->write(Help::toXml($responseData));
} else if (is_array($responseData)) {
$interface->stream->write(json_encode($responseData));
} else {
$interface->stream->write((string)$responseData);
}
return $interface;
}
/**
* @param Server $server
* @param int $fd
* @throws Exception
*/
public function onDisconnect(Server $server, int $fd): void
{
}
/**
* @param Server $server
* @param int $fd
* @throws Exception
*/
public function onClose(Server $server, int $fd): void
{
}
}