Skip to content

ОтелСеттерТекстовойКарты

Сеттер текстовой карты для пропагаторов.

Описание

Реализует абстракцию Setter для работы с носителем типа Соответствие. Сохраняет регистр ключей как есть (согласно спецификации TextMap Propagator: "SHOULD preserve casing"). Нормализацию регистра выполняет транспортный слой.

Согласно спецификации Propagators, сеттер обязан использовать только US-ASCII ключи и значения. Невалидные записи (содержащие символы вне US-ASCII) пропускаются с предупреждением в лог, чтобы не повредить носитель.

Объект является stateless и может быть сохранён как константа.

Конструктор

Конструктор без параметров.

bsl
Новый ОтелСеттерТекстовойКарты()

Методы

Установить

Устанавливает значение в носителе по ключу. Регистр ключа сохраняется.

Если ключ или значение содержат не US-ASCII символы, запись пропускается и в лог записывается предупреждение (носитель не модифицируется).

Допустимые символы ключа (RFC 9110 token): A-Z, a-z, 0-9, ! # $ % & ' * + - . ^ _ \ | ~ Допустимые символы значения: VCHAR (0x21-0x7E), пробел (0x20), горизонтальный таб (0x09`). Значение не должно начинаться или заканчиваться пробелом или табом.

ПараметрТипПо умолчаниюОписание
НосительСоответствиеКоллекция заголовков (модифицируется)
КлючСтрокаИмя заголовка (US-ASCII)
ЗначениеСтрокаЗначение заголовка (US-ASCII)

Пример

bsl
#Использовать opentelemetry

Сеттер = Новый ОтелСеттерТекстовойКарты();

Заголовки = Новый Соответствие();
Сеттер.Установить(Заголовки, "traceparent", "00-abc123...");
Сеттер.Установить(Заголовки, "tracestate", "vendor=data");

// Невалидный ключ — будет пропущен с предупреждением в лог
Сеттер.Установить(Заголовки, "мой-заголовок", "значение"); // US-ASCII нарушение

// Использование с пропагатором
Пропагатор = Новый ОтелW3CПропагатор();
Пропагатор.Внедрить(ОтелКонтекст.Текущий(), Заголовки, Сеттер);