ОтелСеттерТекстовойКарты
Сеттер текстовой карты для пропагаторов.
Описание
Реализует абстракцию Setter для работы с носителем типа Соответствие. Сохраняет регистр ключей как есть (согласно спецификации TextMap Propagator: "SHOULD preserve casing"). Нормализацию регистра выполняет транспортный слой.
Согласно спецификации Propagators, сеттер обязан использовать только US-ASCII ключи и значения. Невалидные записи (содержащие символы вне US-ASCII) пропускаются с предупреждением в лог, чтобы не повредить носитель.
Объект является stateless и может быть сохранён как константа.
Конструктор
Конструктор без параметров.
Новый ОтелСеттерТекстовойКарты()Методы
Установить
Устанавливает значение в носителе по ключу. Регистр ключа сохраняется.
Если ключ или значение содержат не US-ASCII символы, запись пропускается и в лог записывается предупреждение (носитель не модифицируется).
Допустимые символы ключа (RFC 9110 token): A-Z, a-z, 0-9, ! # $ % & ' * + - . ^ _ \ | ~ Допустимые символы значения: VCHAR (0x21-0x7E), пробел (0x20), горизонтальный таб (0x09`). Значение не должно начинаться или заканчиваться пробелом или табом.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
Носитель | Соответствие | — | Коллекция заголовков (модифицируется) |
Ключ | Строка | — | Имя заголовка (US-ASCII) |
Значение | Строка | — | Значение заголовка (US-ASCII) |
Пример
#Использовать opentelemetry
Сеттер = Новый ОтелСеттерТекстовойКарты();
Заголовки = Новый Соответствие();
Сеттер.Установить(Заголовки, "traceparent", "00-abc123...");
Сеттер.Установить(Заголовки, "tracestate", "vendor=data");
// Невалидный ключ — будет пропущен с предупреждением в лог
Сеттер.Установить(Заголовки, "мой-заголовок", "значение"); // US-ASCII нарушение
// Использование с пропагатором
Пропагатор = Новый ОтелW3CПропагатор();
Пропагатор.Внедрить(ОтелКонтекст.Текущий(), Заголовки, Сеттер);