%PDF- %PDF-
Direktori : /data/www_bck/varak.net_bck/ampache.varak.net/modules/React/Dns/Resolver/ |
Current File : //data/www_bck/varak.net_bck/ampache.varak.net/modules/React/Dns/Resolver/Factory.php |
<?php namespace React\Dns\Resolver; use React\Cache\ArrayCache; use React\Dns\Query\Executor; use React\Dns\Query\CachedExecutor; use React\Dns\Query\RecordCache; use React\Dns\Protocol\Parser; use React\Dns\Protocol\BinaryDumper; use React\EventLoop\LoopInterface; use React\Dns\Query\RetryExecutor; class Factory { public function create($nameserver, LoopInterface $loop) { $nameserver = $this->addPortToServerIfMissing($nameserver); $executor = $this->createRetryExecutor($loop); return new Resolver($nameserver, $executor); } public function createCached($nameserver, LoopInterface $loop) { $nameserver = $this->addPortToServerIfMissing($nameserver); $executor = $this->createCachedExecutor($loop); return new Resolver($nameserver, $executor); } protected function createExecutor(LoopInterface $loop) { return new Executor($loop, new Parser(), new BinaryDumper()); } protected function createRetryExecutor(LoopInterface $loop) { return new RetryExecutor($this->createExecutor($loop)); } protected function createCachedExecutor(LoopInterface $loop) { return new CachedExecutor($this->createRetryExecutor($loop), new RecordCache(new ArrayCache())); } protected function addPortToServerIfMissing($nameserver) { if (strpos($nameserver, '[') === false && substr_count($nameserver, ':') >= 2) { // several colons, but not enclosed in square brackets => enclose IPv6 address in square brackets $nameserver = '[' . $nameserver . ']'; } // assume a dummy scheme when checking for the port, otherwise parse_url() fails if (parse_url('dummy://' . $nameserver, PHP_URL_PORT) === null) { $nameserver .= ':53'; } return $nameserver; } }