class DelayedStalenessHandlerFactory
Hierarchy
- class \OpenTelemetry\SDK\Metrics\StalenessHandler\DelayedStalenessHandlerFactory implements \OpenTelemetry\SDK\Metrics\StalenessHandlerFactoryInterface
Expanded class hierarchy of DelayedStalenessHandlerFactory
File
-
vendor/
open-telemetry/ sdk/ Metrics/ StalenessHandler/ DelayedStalenessHandlerFactory.php, line 14
Namespace
OpenTelemetry\SDK\Metrics\StalenessHandlerView source
final class DelayedStalenessHandlerFactory implements StalenessHandlerFactoryInterface {
private readonly int $nanoDelay;
private readonly Closure $stale;
private readonly Closure $freshen;
/** @var WeakMap<DelayedStalenessHandler, int> */
private WeakMap $staleHandlers;
/**
* @param float $delay delay in seconds
* @psalm-suppress PropertyTypeCoercion
*/
public function __construct(ClockInterface $clock, float $delay) {
$this->nanoDelay = (int) ($delay * 1000000000.0);
$this->stale = function (DelayedStalenessHandler $handler) : void {
$this->staleHandlers[$handler] = $this->clock
->now();
};
$this->freshen = function (DelayedStalenessHandler $handler) : void {
unset($this->staleHandlers[$handler]);
};
$this->staleHandlers = new WeakMap();
}
public function create() : ReferenceCounterInterface&StalenessHandlerInterface {
$this->triggerStaleHandlers();
return new DelayedStalenessHandler($this->stale, $this->freshen);
}
private function triggerStaleHandlers() : void {
$expired = $this->clock
->now() - $this->nanoDelay;
foreach ($this->staleHandlers as $handler => $timestamp) {
if ($timestamp > $expired) {
break;
}
/** @var DelayedStalenessHandler $handler */
unset($this->staleHandlers[$handler]);
$handler->triggerStale();
}
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title |
---|---|---|---|---|
DelayedStalenessHandlerFactory::$freshen | private | property | ||
DelayedStalenessHandlerFactory::$nanoDelay | private | property | ||
DelayedStalenessHandlerFactory::$stale | private | property | ||
DelayedStalenessHandlerFactory::$staleHandlers | private | property | @var WeakMap<DelayedStalenessHandler, int> | |
DelayedStalenessHandlerFactory::create | public | function | Overrides StalenessHandlerFactoryInterface::create | |
DelayedStalenessHandlerFactory::triggerStaleHandlers | private | function | ||
DelayedStalenessHandlerFactory::__construct | public | function | @psalm-suppress PropertyTypeCoercion |