Определяет замкнутый интервал значений байтов для шаблонов диагностических служб в динамических списках доступа.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 772c8ed103ebПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Определяет замкнутый интервал значений байтов для шаблонов диагностических служб в динамических списках доступа.
Класс ara::diag::DynamicAccessListDiagServiceBuilder::ByteRange представляет собой замкнутый интервал значений байтов для определения шаблонов диагностических служб в динамических списках доступа [SWS_DM_01182]. Приложения создают эти объекты-значения с минимальными и максимальными значениями и передают их билдеру для пошаговой конфигурации шаблонов служб [SWS_DM_01183]. Кроме того, заданные границы интервала можно в любой момент считать через инспекторы. Все функции-члены объявлены безопасными относительно исключений как noexcept, тогда как модифицирующие операторы присваивания при параллельном доступе требуют отдельной синхронизации.
Контекст
Класс ara::diag::DynamicAccessListDiagServiceBuilder::ByteRange представляет собой замкнутый интервал значений байтов в составе шаблона диагностической службы [SWS_DM_01182]. В рамках динамического управления доступом (DynamicAccessList) он выступает элементарным строительным блоком для точного задания критериев и диапазонов значений отдельных байтов для диагностических запросов AUTOSAR_AP_SWS_Diagnostics §8.15.2 «Class: ByteRange».
Являясь вложенным типом-значением, ByteRange напрямую взаимодействует с вышестоящим DynamicAccessListDiagServiceBuilder. В то время как диагностическое приложение создает экземпляры с конкретными пороговыми значениями, билдер использует эти объекты через такие методы, как Add[SWS_DM_01177] или EndsWith[SWS_DM_01180], для построения последовательных серий байтовых шаблонов для диагностических служб. Дополнительно класс обеспечивает считывание сконфигурированных границ через GetMin[SWS_DM_01189] и GetMax[SWS_DM_01190].
Жизненный цикл
Экземпляры ByteRange обычно создаются через параметризованный конструктор, принимающий минимальное (min) и максимальное значение (max) в качестве замкнутого интервала значений [SWS_DM_01183]. Поскольку это объект-значение без состояния и без динамической привязки ресурсов, сложные внутренние фазы работы отсутствуют.
Класс реализует семантику значений в соответствии со стандартом: он предоставляет как конструктор копирования [SWS_DM_01184], так и конструктор перемещения [SWS_DM_01185], благодаря чему экземпляры могут без проблем передаваться в методы билдера по копии или перемещением. Аналогично доступны оператор присваивания с копированием [SWS_DM_01186] и оператор перемещающего присваивания [SWS_DM_01187]. Жизненный цикл завершается деструктором [SWS_DM_01188].
В отношении параллелизма AUTOSAR специфицирует дифференцированные требования: конструкторы и операции чтения классифицируются как потокобезопасные, тогда как операторы присваивания operator= ([SWS_DM_01186], [SWS_DM_01187]) и деструктор [SWS_DM_01188] явно не являются потокобезопасными. Модифицирующие операции над одним и тем же экземпляром поэтому требуют мер синхронизации на уровне вызывающей стороны.
Путь использования
Типичное использование ByteRange происходит в рамках последовательной конфигурации шаблонов служб через билдер:
Приложение создает объект ByteRange с указанием границ min и max[SWS_DM_01183].
Интервал передается в DynamicAccessListDiagServiceBuilder::Add для расширения шаблона в текущей позиции [SWS_DM_01177].
С помощью EndsWith можно определить финальный интервал, завершающий шаблон [SWS_DM_01180].
При необходимости приложение считывает граничные значения через GetMin[SWS_DM_01189] и GetMax[SWS_DM_01190] для верификации.
Диаграмма последовательности: типичное взаимодействие при определении диагностического шаблона с помощью ByteRange. Источники: [SWS_DM_01183], [SWS_DM_01177], [SWS_DM_01180], [SWS_DM_01189], [SWS_DM_01190].
Сценарии ошибок
Все функции-члены класса объявлены с noexcept и, следовательно, полностью безопасны относительно исключений (exception safe) [SWS_DM_01183]. Ни создание, ни присваивания, ни запросы не генерируют исключений C++.
Возможные ошибочные ситуации касаются прежде всего логических ошибок параметризации: если приложение передает минимальное значение min, превышающее максимальное значение max, спецификация не определяет явного поведения при ошибке (интерпретация: такая недопустимая пара значений, вероятно, отклоняется только при последующей обработке шаблона в билдере или приводит к пустому шаблону совпадений). Вопрос Q-ea9c65d175d48946 (открытый) Еще один риск ошибок заключается в незащищенном присваивании через operator= при параллельном доступе нескольких потоков к одному и тому же объекту, поскольку присваивания не являются потокобезопасными [SWS_DM_01186].
Настоящее руководство по классу основано на спецификации AUTOSAR Adaptive R25-11 для модуля diag.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал