ОтелСостояниеТрассировки
Состояние трассировки (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 символов усекается целыми записями): такУстановитьиУдалитьсоздают новое состояние.
Пример
СостояниеТрассировки = Спан.КонтекстСпана().СостояниеТрассировки();
НовоеСостояние = СостояниеТрассировки
.Установить("vendor1", "value1")
.Установить("vendor2", "value2");
Сообщить("Записей: " + НовоеСостояние.Количество());
Сообщить(НовоеСостояние.ВСтроку()); // начинается с "vendor2=value2,vendor1=value1"