Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. DelayedStalenessHandlerFactory.php

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\StalenessHandler
View 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&lt;DelayedStalenessHandler, int&gt;
DelayedStalenessHandlerFactory::create public function Overrides StalenessHandlerFactoryInterface::create
DelayedStalenessHandlerFactory::triggerStaleHandlers private function
DelayedStalenessHandlerFactory::__construct public function @psalm-suppress PropertyTypeCoercion

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal