private static function create()

in prod/php/ElasticOTel/Traces/ElasticRootSpan.php [94:122]


    private static function create(ServerRequestInterface $request): void
    {
        $tracer = Globals::tracerProvider()->getTracer(
            'co.elastic.php.elastic-root-span',
            null,
            Version::VERSION_1_25_0->url(),
        );
        $parent = Globals::propagator()->extract($request->getHeaders());
        $spanBuilder = $tracer->spanBuilder(self::getSpanName($request))
            ->setSpanKind(SpanKind::KIND_SERVER)
            ->setStartTimestamp((int) (self::getStartTime($request) * 1_000_000_000))
            ->setParent($parent);
        if (!self::isCliSapi()) {
            $spanBuilder->setAttributes(
                [
                    TraceAttributes::URL_FULL               => strval($request->getUri()),
                    TraceAttributes::HTTP_REQUEST_METHOD    => $request->getMethod(),
                    TraceAttributes::HTTP_REQUEST_BODY_SIZE => $request->getHeaderLine('Content-Length'),
                    TraceAttributes::USER_AGENT_ORIGINAL    => $request->getHeaderLine('User-Agent'),
                    TraceAttributes::SERVER_ADDRESS         => $request->getUri()->getHost(),
                    TraceAttributes::SERVER_PORT            => $request->getUri()->getPort(),
                    TraceAttributes::URL_SCHEME             => $request->getUri()->getScheme(),
                    TraceAttributes::URL_PATH               => $request->getUri()->getPath(),
                ]
            );
        }
        $span = $spanBuilder->startSpan();
        Context::storage()->attach($span->storeInContext($parent));
    }