webprofiler-10.0.x-dev/src/Plugin/Tracer/StopwatchTracer.php

src/Plugin/Tracer/StopwatchTracer.php
<?php

declare(strict_types=1);

namespace Drupal\webprofiler\Plugin\Tracer;

use Drupal\tracer\TracerInterface;
use Symfony\Component\Stopwatch\Stopwatch;

/**
 * Tracer that uses Symfony Stopwatch as a backend.
 */
class StopwatchTracer implements TracerInterface {

  /**
   * The Stopwatch instance.
   *
   * @var \Symfony\Component\Stopwatch\Stopwatch
   */
  private Stopwatch $tracer;

  /**
   * StopwatchTracer constructor.
   */
  public function __construct() {
    $this->tracer = new Stopwatch();
  }

  /**
   * {@inheritdoc}
   */
  public function start(string $category, string $name, array $attributes = []): object {
    return $this->tracer->start($name, $category);
  }

  /**
   * {@inheritdoc}
   */
  public function openSection(object $span): object {
    $this->tracer->openSection();

    return $span;
  }

  /**
   * {@inheritdoc}
   */
  public function closeSection(object $span): object {
    $this->tracer->stopSection('__root__');

    return $span;
  }

  /**
   * {@inheritdoc}
   */
  public function stop(object $span): void {
    try {
      $span->stop();
    }
    catch (\Exception $e) {

    }
  }

  /**
   * {@inheritdoc}
   */
  public function getEvents(): array {
    return $this->tracer->getSectionEvents('__root__');
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc