src/NodePool/Node.php (43 lines of code) (raw):

<?php /** * Elastic Transport * * @link https://github.com/elastic/elastic-transport-php * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co) * @license https://opensource.org/licenses/MIT MIT License * * Licensed to Elasticsearch B.V under one or more agreements. * Elasticsearch B.V licenses this file to you under the MIT License. * See the LICENSE file in the project root for more information. */ declare(strict_types=1); namespace Elastic\Transport\NodePool; use Http\Discovery\Psr17FactoryDiscovery; use Psr\Http\Message\UriInterface; use function sprintf; use function substr; class Node { protected UriInterface $uri; protected bool $alive = true; protected int $failedPings = 0; protected ?int $lastPing = null; // timestamp public function __construct(string $host) { if (substr($host, 0, 5) !== 'http:' && substr($host, 0, 6) !== 'https:') { $host = sprintf("http://%s", $host); } $this->uri = Psr17FactoryDiscovery::findUriFactory()->createUri($host); } public function markAlive(bool $alive): void { $this->alive = $alive; $this->failedPings = $alive ? 0 : ($this->failedPings + 1); $this->lastPing = time(); } public function isAlive(): bool { return $this->alive; } public function getUri(): UriInterface { return $this->uri; } public function getLastPing(): ?int { return $this->lastPing; } public function getFailedPings(): int { return $this->failedPings; } }