blob: f36f74a2ac07e44f54171a724aabee78d56d0179 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
<?php
declare(strict_types=1);
namespace OpenTelemetry\SDK\Metrics\MetricRegistry;
use OpenTelemetry\API\Metrics\ObserverInterface;
use OpenTelemetry\Context\Context;
use OpenTelemetry\SDK\Common\Attribute\AttributesFactoryInterface;
use OpenTelemetry\SDK\Metrics\Stream\WritableMetricStreamInterface;
/**
* @internal
*/
final class MultiObserver implements ObserverInterface
{
private AttributesFactoryInterface $attributesFactory;
private int $timestamp;
/** @var list<WritableMetricStreamInterface> */
public array $writers = [];
public function __construct(AttributesFactoryInterface $attributesFactory, int $timestamp)
{
$this->attributesFactory = $attributesFactory;
$this->timestamp = $timestamp;
}
public function observe($amount, iterable $attributes = []): void
{
$context = Context::getRoot();
$attributes = $this->attributesFactory->builder($attributes)->build();
foreach ($this->writers as $writer) {
$writer->record($amount, $attributes, $context, $this->timestamp);
}
}
}
|