1
0
mirror of https://github.com/PurpleI2P/regi2p.git synced 2025-01-15 09:49:56 +00:00
regi2p/lib/checker.php
r4sas 57b6299440
push recent updates
Signed-off-by: r4sas <r4sas@i2pmail.org>
2022-06-06 17:57:49 +00:00

54 lines
1.4 KiB
PHP

<?php
namespace App;
use App\BOB;
use Amp\Parallel\Worker\Environment;
use Amp\Parallel\Worker\Task;
use Amp\Parallel\Worker\TaskFailureError;
use Amp\Parallel\Worker\TaskFailureException;
use Amp\Parallel\Worker\TaskFailureThrowable;
class Checker implements Task
{
private $options = [];
private $base32;
public function __construct($base32, $options = [])
{
$this->options = array_merge($this->options, (array) $options);
$this->base32 = $base32;
}
/**
* @param Environment $environment
* @return \Amp\Promise|\Generator|mixed
*/
public function run(Environment $environment)
{
$bob = new BOB($this->options);
$bob->getnick();
$result = false;
for ($i = 0, $tries = $this->options['check_tries'], $sleep = $this->options['retry_delay']; $i < $tries; ++$i) {
$result = $bob->lookuplocal($this->base32 . ".b32.i2p");
if(!$result) {
$result = $bob->lookup($this->base32 . ".b32.i2p");
}
if ($result) {
break;
}
// sleep before next try if we must do more that 1 tries to lookup destination
if($tries > 1 && $i < $tries) // do not sleep if that is last try
sleep($sleep);
}
$bob = null;
echo "Processed " . $this->base32 . ": " . ($result ? "online" : "offline") . PHP_EOL;
return $result;
}
}