Aerys\Server::export PHP Method

export() private method

private export ( Client $client ) : Closure
$client Client
return Closure
    private function export(Client $client) : \Closure
    {
        $client->isDead = Client::CLOSED_RDWR;
        $client->isExported = true;
        $this->clear($client);
        assert($this->logDebug("export {$client->clientAddr}:{$client->clientPort}"));
        $net = @\inet_pton($client->clientAddr);
        if (isset($net[4])) {
            $net = substr($net, 0, 7);
        }
        $clientCount =& $this->clientCount;
        $clientsPerIP =& $this->clientsPerIP[$net];
        $closer = static function () use(&$clientCount, &$clientsPerIP) {
            $clientCount--;
            $clientsPerIP--;
        };
        assert($closer = (function () use($client, &$clientCount, &$clientsPerIP) {
            $logger = $this->logger;
            $message = "close {$client->clientAddr}:{$client->clientPort}";
            return static function () use(&$clientCount, &$clientsPerIP, $logger, $message) {
                $clientCount--;
                $clientsPerIP--;
                assert($clientCount >= 0);
                assert($clientsPerIP >= 0);
                $logger->log(Logger::DEBUG, $message);
            };
        })());
        return $closer;
    }