Skip to content

ОтелСостояниеТрассировки ​

Состояние трассировки (W3C TraceState).

Описание ​

Хранит пары ключ-значение, передаваемые по W3C TraceContext HTTP-заголовку tracestate. Разбор и проверка следуют W3C Trace Context Level 2:

  • ключ начинается со строчной латинской буквы или цифры и содержит a-z, 0-9, _, -, *, /, @ (например, vendorname или tenant@vendorname), не длиннее 256 символов;
  • значение — печатные ASCII без , и =, не длиннее 256 символов; ведущие пробелы сохраняются, завершающий пробел недопустим;
  • не больше 32 записей; состояние длиннее 512 символов усекается целыми записями — сначала удаляются записи длиннее 128 символов, затем записи с конца.

Несколько заголовков tracestate пропагатор объединяет в один через запятую.

Аналог Java SDK: TraceState. Иммутабельный: методы Установить, Удалить возвращают новый экземпляр.

Методы ​

Получить ​

Возвращает значение по ключу.

ПараметрТипПо умолчаниюОписание
КлючСтрока—Ключ записи

Возвращает: Строка, Неопределено — значение или Неопределено, если ключа нет


Установить ​

Добавляет или обновляет значение по ключу. Возвращает новый экземпляр (иммутабельность). Добавленная или обновлённая запись ставится первой; если записей уже 32, новая запись вытесняет крайнюю правую (W3C Trace Context). Невалидные ключ или значение игнорируются с предупреждением, тогда возвращается текущий экземпляр.

ПараметрТипПо умолчаниюОписание
КлючСтрока—Ключ записи
ЗначениеСтрока—Значение записи

Возвращает: ОтелСостояниеТрассировки — новый экземпляр с добавленной записью


Удалить ​

Удаляет запись по ключу. Возвращает новый экземпляр.

ПараметрТипПо умолчаниюОписание
КлючСтрока—Ключ для удаления

Возвращает: ОтелСостояниеТрассировки — новый экземпляр без удалённой записи


Количество ​

Возвращает количество записей.

Возвращает: Число


Пустой ​

Проверяет, что в состоянии нет записей.

Возвращает: Булево — Истина, если записей нет


ВСтроку ​

Возвращает состояние в формате W3C-заголовка tracestate: записи ключ=значение через запятую без пробелов, в порядке списка — запись, добавленная или обновлённая через Установить, стоит первой. Эту строку W3C-пропагатор передаёт в заголовке tracestate, а экспортер спанов — в поле traceState OTLP.

Возвращает: Строка — например "congo=t61rcWkgMzE,rojo=00f067aa0ba902b7"; пустая строка, если записей нет

Внутренние методы ​

Экспортирован, чтобы методы класса могли заполнить новый экземпляр (в OneScript нет внутренней видимости), приложению вызывать его не нужно:

  • ИнициализироватьИзМассива — заполняет новый экземпляр готовым списком записей (список длиннее 512 символов усекается целыми записями): так Установить и Удалить создают новое состояние.

Пример ​

bsl
СостояниеТрассировки = Спан.КонтекстСпана().СостояниеТрассировки();
НовоеСостояние = СостояниеТрассировки
    .Установить("vendor1", "value1")
    .Установить("vendor2", "value2");

Сообщить("Записей: " + НовоеСостояние.Количество());
Сообщить(НовоеСостояние.ВСтроку()); // начинается с "vendor2=value2,vendor1=value1"

См. также ​