<?php namespace React\Dns\Query; use React\Promise\Deferred; class RetryExecutor implements ExecutorInterface { private $executor; private $retries; public function __construct(ExecutorInterface $executor, $retries = 2) { $this->executor = $executor; $this->retries = $retries; } public function query($nameserver, Query $query) { return $this->tryQuery($nameserver, $query, $this->retries); } public function tryQuery($nameserver, Query $query, $retries) { $that = $this; $errorback = function ($error) use ($nameserver, $query, $retries, $that) { if (!$error instanceof TimeoutException) { throw $error; } if (0 >= $retries) { throw new \RuntimeException( sprintf("DNS query for %s failed: too many retries", $query->name), 0, $error ); } return $that->tryQuery($nameserver, $query, $retries-1); }; return $this->executor ->query($nameserver, $query) ->then(null, $errorback); } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
CachedExecutor.php | File | 1.48 KB | 0644 |
|
CancellationException.php | File | 93 B | 0644 |
|
Executor.php | File | 5.06 KB | 0644 |
|
ExecutorInterface.php | File | 121 B | 0644 |
|
HostsFileExecutor.php | File | 3 KB | 0644 |
|
Query.php | File | 344 B | 0644 |
|
RecordBag.php | File | 545 B | 0644 |
|
RecordCache.php | File | 2.03 KB | 0644 |
|
RetryExecutor.php | File | 1.15 KB | 0644 |
|
TimeoutException.php | File | 81 B | 0644 |
|
TimeoutExecutor.php | File | 913 B | 0644 |
|