config = $config; return $this; } /** * @param Client|Coroutine\Client $client * @param $content * @param bool $isClose * @return mixed */ private function request(Client|Coroutine\Client $client, $content, bool $isClose): mixed { $client->send($content); $read = $client->recv(); if ($isClose) { $client->close(); } return $read; } /** * @return Client|Coroutine\Client * @throws Exception */ private function newClient(): Coroutine\Client|Client { if (Context::inCoroutine()) { $client = $this->clientOnCoroutine($this->config); } else { $client = $this->clientNotCoroutine($this->config); } return $client; } /** * @param $config * @return Coroutine\Client * @throws Exception */ private function clientOnCoroutine($config): Coroutine\Client { $client = new Coroutine\Client(SWOOLE_SOCK_TCP); if (!$client->connect($config['ServiceAddress'], $config['ServicePort'], 60)) { throw new Exception('connect fail.'); } return $client; } /** * @param $config * @return Client * @throws Exception */ private function clientNotCoroutine($config): Client { $client = new Client(SWOOLE_SOCK_TCP); if (!$client->connect($config['ServiceAddress'], $config['ServicePort'], 60)) { throw new Exception('connect fail.'); } return $client; } }