File

projects/opentelemetry-interceptor/src/lib/services/propagator/b3-propagator/b3-propagator.service.ts

Description

B3PropagatorService

Can be a single or multi header.

See Configuration for more information

Index

Properties
Methods

Constructor

constructor(config: OpenTelemetryConfig)

Constructor

Parameters :
Name Type Optional Description
config OpenTelemetryConfig No

OpenTelemetryConfig

Methods

Private Static defineB3Encoding
defineB3Encoding(value: string)

Define if it's a single or multi header

Parameters :
Name Type Optional Description
value string No

string (0 => single header, 1 => Multi Header)

Returns : B3InjectEncoding

B3InjectEncoding

getPropagator
getPropagator()

Return an B3Propagator

Returns : TextMapPropagator

TextMapPropagator as B3Propagator

Properties

Private b3PropagatorConfig
Type : B3PropagatorConfig

B3PropagatorConfig

import { Injectable, Inject } from '@angular/core';
import { IPropagator } from '../propagator.interface';
import { TextMapPropagator } from '@opentelemetry/api';
import { B3Propagator, B3PropagatorConfig, B3InjectEncoding } from '@opentelemetry/propagator-b3';
import {
  OpenTelemetryConfig,
  OTEL_CONFIG,
} from '../../../configuration/opentelemetry-config';

/**
 * B3PropagatorService
 *
 * Can be a single or multi header.
 *
 * See Configuration for more information
 */
@Injectable({
  providedIn: 'root',
})
export class B3PropagatorService implements IPropagator {
  /**
   * B3PropagatorConfig
   */
  private b3PropagatorConfig: B3PropagatorConfig;

  /**
   * Constructor
   *
   * @param config OpenTelemetryConfig
   */
  constructor(@Inject(OTEL_CONFIG) config: OpenTelemetryConfig) {
    this.b3PropagatorConfig = {
      injectEncoding: B3PropagatorService.defineB3Encoding(config.b3PropagatorConfig?.multiHeader)
    };
  }

  /**
   * Define if it's a single or multi header
   *
   * @param value string (0 => single header, 1 => Multi Header)
   * @return B3InjectEncoding
   */
  private static defineB3Encoding(value: string): B3InjectEncoding {
    if (value && '0' === value) {
      return B3InjectEncoding.SINGLE_HEADER;
    }
    return B3InjectEncoding.MULTI_HEADER;
  }

  /**
   * Return an B3Propagator
   *
   * @return TextMapPropagator as B3Propagator
   */
  getPropagator(): TextMapPropagator {
    return new B3Propagator(this.b3PropagatorConfig);
  }
}

results matching ""

    No results matching ""