Оформляет подписку на сервисные триггеры без данных и подсчитывает поступающие импульсы срабатывания для клиентского приложения.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: f0b35174b21cПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Оформляет подписку на сервисные триггеры без данных и подсчитывает поступающие импульсы срабатывания для клиентского приложения.
Класс <SI-Namespace>::proxy::triggers::<Trigger> позволяет клиентским приложениям подписываться на триггерные импульсы без данных через Communication Management [SWS_CM_00723]. После регистрации обратного вызова через SetReceiveHandler() приложение считывает вновь поступившие импульсы с помощью GetNewTriggers()[SWS_CM_00226], [SWS_CM_00250]. Безопасность относительно исключений стандартно гарантируется за исключением UnsetReceiveHandler()[SWS_CM_11614].
Контекст
Сгенерированный прокси-класс <SI-Namespace>::proxy::triggers::<Trigger> представляет на стороне клиента ровно один триггерный элемент, смоделированный в сервисном интерфейсе в роли triggerAUTOSAR_AP_SWS_CommunicationManagement §8 «Service proxy Trigger class». В отличие от потоков данных на основе событий, триггер передает чистые импульсы срабатывания без полезных данных. Класс служит связующим звеном между использующим клиентским приложением, Communication Management (ara::com) и системой мониторинга E2E. Его основная задача заключается в управлении подпиской на входящие триггеры, регистрации обратных вызовов уведомлений о поступлении импульсов или изменениях статуса, а также в предоставлении количества поступивших срабатываний через счетчик [SWS_CM_00226], [SWS_CM_00250].
Жизненный цикл
Время жизни экземпляра <SI-Namespace>::proxy::triggers::<Trigger> привязано к времени жизни вышестоящего сервисного прокси-объекта, в котором он существует как член класса. С точки зрения состояний подписка на триггер проходит несколько фаз, которые отображаются через ara::com::SubscriptionState и могут быть запрошены через GetSubscriptionState()[SWS_CM_01105]:
Не подписано: исходное состояние до вызова Subscribe() или после успешного выполнения Unsubscribe()[SWS_CM_00723], [SWS_CM_00810].
Подписка ожидает подтверждения (kSubscriptionPending): промежуточное состояние после инициирования Subscribe() во время подтверждения подписки [SWS_CM_00723].
Подписано (kSubscribed): подписка активна; поступающие импульсы триггера инкрементируют внутренний счетчик и приводят к уведомлению зарегистрированного обработчика [SWS_CM_00226], [SWS_CM_00250].
Повторный вызов Subscribe() в состояниях kSubscribed или kSubscriptionPending не имеет эффекта и завершается без каких-либо действий [SWS_CM_00723]. Аналогично ведет себя Unsubscribe(), если подписка на триггер на момент вызова отсутствует [SWS_CM_00810]. Для наблюдения за переходами между состояниями приложение может задать соответствующий обратный вызов с помощью SetSubscriptionStateChangeHandler()[SWS_CM_01107] или разрегистрировать его через UnsetSubscriptionStateChangeHandler()[SWS_CM_01108].
Диаграмма состояний: жизненный цикл подписки на триггер с переходами через Subscribe и Unsubscribe. Источники: [SWS_CM_00723], [SWS_CM_00810], [SWS_CM_01105].
Путь использования
Типичный сценарий использования для обработки триггерных сигналов, управляемой событиями, включает настройку обратных вызовов, активацию подписки и опрос счетчика:
Регистрация обработчиков: приложение опционально задает обработчик состояния через SetSubscriptionStateChangeHandler()[SWS_CM_01107], а также в обязательном порядке обработчик приема через SetReceiveHandler()[SWS_CM_00250]. Для конкурентных архитектур доступны перегрузки с выделенным ExecutorT, определяющие контекст выполнения для асинхронных вычислений [SWS_CM_00352], [SWS_CM_01106].
Запрос подписки: подписка на триггер запускается с помощью Subscribe()[SWS_CM_00723].
Прием сигнала и опрос счетчика: как только поступает импульс триггера, Communication Management вызывает TriggerReceiveHandler без параметров [SWS_CM_00250]. Внутри этого обработчика приложение вызывает GetNewTriggers() для обновления счетчика триггера и считывания количества поступивших с момента последнего вызова импульсов [SWS_CM_00226]. При этом значение 0 сигнализирует об отсутствии новых импульсов.
Завершение: для корректного освобождения ресурсов приложение вызывает Unsubscribe()[SWS_CM_00810] и удаляет установленные обработчики через UnsetReceiveHandler()[SWS_CM_11614], а также UnsetSubscriptionStateChangeHandler()[SWS_CM_01108].
Диаграмма последовательности: типичный процесс обработки триггеров от регистрации и подписки через прием сигналов до отмены регистрации. Источники: [SWS_CM_00226], [SWS_CM_00250], [SWS_CM_00723], [SWS_CM_00810], [SWS_CM_11614].
Сценарии ошибок
Спецификация определяет конкретные условия нарушений (Violations) и гарантии безопасности исключений для методов интерфейса:
InsufficientPermissionsViolation: инициируется при Subscribe(), если контроль доступа (Grant Enforcement) отклоняет полномочия на подписку на триггер [SWS_CM_00723].
Ошибки транспорта в механизме E2E-защиты: сбойные состояния передачи сообщаются через обработчик, зарегистрированный с помощью SetTransportFaultConditionHandler()[SWS_CM_00106], [SWS_CM_00107], регистрацию которого можно отменить через UnsetTransportFaultConditionHandler()[SWS_CM_00108].
Безопасность исключений: практически все операции объявлены как noexcept и являются безопасными к исключениям (exception safe) [SWS_CM_00226], [SWS_CM_00723]. Исключение составляет UnsetReceiveHandler(), который согласно спецификации явно классифицирован как небезопасный к исключениям (not exception safe) [SWS_CM_11614]; вероятно, данный вызов при ошибках может распространять исключения или требует отдельной обработки ошибок в клиентском приложении. Вопрос Q-3f9833ab71a91dd1 (открытый)
Данное руководство основано исключительно на спецификации AUTOSAR Adaptive R25-11 для модуля Communication Management.
Method to subscribe to a service trigger. When called it starts a subscription of the corresponding Trigger. If the Trigger is already in state kSubscribed or in state kSubscriptionPending at the time of the call, and this method is invoked, it shall return without any action.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 6c77e80a6df1Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Функция SetReceiveHandler вызывается в области видимости класса триггера прокси сервиса (<SI-Namespace>::proxy::triggers::<Trigger>) и подключается через заголовочный файл <SiNamespaceDerivedDirectoryPath>/<SiShortname>_proxy.h[SWS_CM_00250]. Триггеры наряду с событиями, методами и полями образуют один из четырех механизмов коммуникации в ara::comEXP_ARAComAPI §4.2 «Means of Communication».
Параметр handler типа ara::com::TriggerReceiveHandler принимает вызываемый объект, который вызывается Communication Management при поступлении триггера. Сам обработчик не имеет параметров; для запроса текущего значения счетчика триггеров внутри функции обратного вызова должен вызываться метод GetNewTriggers конкретного класса триггера [SWS_CM_00250].
Обработка ошибок и безопасность исключений
Регистрация не возвращает значения (void) и определена как noexcept, а также exception safe[SWS_CM_00250]. Нарушение соглашения о вызовах в форме InvalidHandlerViolation возникает, если переданный вызываемый объект не существует или равен null[SWS_CM_00250].
InvalidHandlerVio- Provided Callable handler does not exist or is null lation
Parameter (in)
Parameter
Beschreibung
handler
The handler that shall be called by Communication Management upon trigger arrival. The ara::com::TriggerReceiveHandler constitutes a function without parameters and has to use the Get NewTriggers method of the specific Trigger class to access the retrieved trigger counter. See [SWS_CM_00351] for it’s definition.
As per [SWS_CM_01107] but the method shall execute in a provided context
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: d2573855e57eПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Шаблонная функция SetSubscriptionStateChangeHandler в области видимости <SI-Namespace>::proxy::triggers::<Trigger> регистрирует обратный вызов для уведомления об изменениях состояния подписки ([SWS_CM_01106]). Она объявляется через заголовочный файл <SiNamespaceDerivedDirectoryPath>/<SiShortname>_proxy.h и принимает два параметра:
handler: вызываемая сущность типа ara::com::SubscriptionStateChangeHandler, которая должна выполняться при изменении состояния ([SWS_CM_01107]).
executor: контекст выполнения типа ExecutorT ([SWS_CM_11360]), в котором должно происходить выполнение обработчика.
Сама регистрация ведет себя синхронно и не имеет возвращаемого значения (void). Зарегистрированный обратный вызов выполняется при изменениях состояния в указанном контексте выполнения.
Обработка ошибок и безопасность исключений
Метод объявлен как noexcept и специфицирован как exception safe ([SWS_CM_01106]). Если переданный экземпляр Callable не существует или равен null, возникает InvalidHandlerViolation ([SWS_CM_01106]). Поскольку исключения не генерируются, недействительный обработчик, предположительно, приводит к платформо-зависимому пути обработки ошибок (интерпретация). Вопрос Q-cbb90bfbfa10338d (открытый)
Параллелизм и взаимодействие
Путем передачи исполнителя ([SWS_CM_11360]) приложение само управляет контекстом выполнения для обратных вызовов состояния. Это, вероятно, предотвращает блокировку длительными вызовами обработчика внутренней обработки событий управления связью (интерпретация). Вопрос (открытый) Функция расширяет бесконтекстный вариант [SWS_CM_01107] и представляет собой триггерный аналог интерфейсов на основе исполнителя для событий прокси ([SWS_CM_11354]), полей прокси ([SWS_CM_11608]) и триггеров скелетона ([SWS_CM_11111]).
Это указание по использованию было сгенерировано автоматически и основано на спецификациях AUTOSAR Adaptive Platform.
Руководство разработчика реализации в подготовке (сложность I3)
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: b21ff32dc0c5Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
С помощью функции [SWS_CM_01107] в области прокси триггера (<SI-Namespace>::proxy::triggers::<Trigger>) регистрируется обработчик обратного вызова, который Communication Management вызывает при каждом изменении состояния подписки (ara::com::SubscriptionState). Функция не имеет возвращаемого значения и специфицирована как исключение-безопасная (noexcept).
Поскольку оформление подписки в целом должно рассматриваться как асинхронный процесс, приложение может исходить из успешности подписки только тогда, когда зарегистрированный через [SWS_CM_01107] обработчик или функция опроса GetSubscriptionState() сообщает о состоянии kSubscribed[SWS_CM_12006]. При временных задержках или если сервер временно недоступен вследствие перезапуска либо проблемы с сетью, Communication Management активирует обработчик с состоянием kSubscriptionPending[SWS_CM_00313].
Для обработки ошибок и интеграции действуют следующие граничные условия:
Обработка ошибок: передача несуществующего или пустого вызываемого объекта (null) недопустима и приводит к InvalidHandlerViolation[SWS_CM_01107].
Контекст выполнения: если обработчик должен выполняться не в стандартном контексте, а внутри специфического контекста выполнения, доступна шаблонная перегрузка с ExecutorT&&[SWS_CM_01106].
Provides possibility to register a TransportFaultConditionHandler for a given Proxy Trigger.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 979128a8c136ПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция SetTransportFaultConditionHandler служит для регистрации функции обратного вызова типа ara::com::e2e::TransportFaultConditionHandler на экземпляре proxy::triggers::<Trigger> ([SWS_CM_00106]). Она принимает параметр handler, не имеет возвращаемого значения и специфицирована как noexcept, а также exception safe ([SWS_CM_00106]).
Через зарегистрированный обработчик коммуникационный уровень сигнализирует об обнаруженных ошибках уровня передачи. В сетевом биндинге DDS обработчик сообщает о событиях базовой сущности DataReader как TransportFaultCondition ([SWS_CM_00212]):
TransportFaultCondition::kSampleRejected при отброшенных сэмплах (например, из-за нехватки памяти или повреждения данных),
TransportFaultCondition::kDeadlineMissed при нарушении крайних сроков приема (REQUESTED_DEADLINE_MISSED),
TransportFaultCondition::kSampleLost при потере распознанных сэмплов данных ([SWS_CM_00212]).
Если вместо действительного вызываемого объекта передан несуществующий или пустой обработчик, среда выполнения сообщает о InvalidHandlerViolation ([SWS_CM_00106]). Поскольку сигнатура функции объявлена как noexcept, это нарушение, вероятно, приводит к платформенной обработке ошибок вместо исключения C++. Вопрос Q-ebaf44b8f7b198e8 (открытый)
Регистрация выполняется синхронно в контексте вызывающей стороны; выполнение обработчика при данной перегрузке не делегируется конкретному диспетчеру. Если обратный вызов должен работать в определенном контексте выполнения, доступен перегруженный шаблонный вариант с дополнительным ExecutorT&& ([SWS_CM_00107]). Подключение целесообразно выполнять до фактической обработки триггера, чтобы фиксировать ошибки с самого начала. Вопрос (открытый)
Соответствующие возможности регистрации для TransportFaultConditionHandler существуют аналогичным образом для событий Proxy ([SWS_CM_00099]), полей Proxy ([SWS_CM_00109]), а также методов Skeleton ([SWS_CM_00093]) и полей Skeleton ([SWS_CM_00096]).
Этот текст был сгенерирован ИИ и служит в качестве справочного руководства. Обязательную силу имеют приведенные спецификации AUTOSAR.
Руководство разработчика реализации в подготовке (сложность I2)
Execution Context overload for hierarchicalnamespacelistlowerproxy::proxy:: triggers::triggername::SetTransportFaultConditionHandler for a given Proxy Trigger.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 653e5e8a79beПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция [SWS_CM_00107] служит для регистрации процедуры обратного вызова для транспортных ошибок прокси-триггера в пространстве имен <SI-Namespace>::proxy::triggers::<Trigger>. Будучи перегрузкой с контекстом выполнения, она принимает помимо обработчика типа ara::com::e2e::TransportFaultConditionHandler объект исполнителя executor, в котором выполняются инициированные асинхронные вычисления.
В отношении использования и обработки ошибок действуют следующие положения:
Параметры и возвращаемое значение: Параметр handler передает устанавливаемый вызываемый объект, тогда как executor определяет контекст выполнения для асинхронных задач [SWS_CM_00107]. Функция не возвращает значения и объявлена как noexcept (безопасность исключений: exception safe).
Ошибочные ситуации и нарушения: Если передается несуществующий или недействительный обработчик (null), среда выполнения сообщает о InvalidHandlerViolation[SWS_CM_00107].
Сообщаемые состояния ошибок: Зарегистрированный обработчик принимает обнаруженные транспортные ошибки согласно [SWS_CM_00212]. К ним относятся TransportFaultCondition::kSampleRejected (например, при повреждении данных или нехватке ресурсов), TransportFaultCondition::kDeadlineMissed (при нарушении сроков), а также TransportFaultCondition::kSampleLost (при потере выборок).
По сравнению с базовой функцией без исполнителя [SWS_CM_00106] данный вариант позволяет целенаправленно управлять контекстом параллелизма для обработки ошибок триггера. Аналогичные перегрузки с контекстом выполнения существуют в Communication Management для событий прокси [SWS_CM_00100], полей прокси [SWS_CM_00110], а также на уровне скелетона для методов [SWS_CM_00094] и полей [SWS_CM_00097].
Это указание по использованию было создано автоматически на основе спецификации AUTOSAR Adaptive Platform R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
Method to subscribe to a service trigger. When called it starts a subscription of the corresponding Trigger. If the Trigger is already in state kSubscribed or in state kSubscriptionPending at the time of the call, and this method is invoked, it shall return without any action.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: cad2e3ac0bc9ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод Subscribe служит для подписки со стороны клиента на сервисный триггер через прокси-экземпляр в пространстве имён <SI-Namespace>::proxy::triggers::<Trigger>[SWS_CM_00723]. Перед использованием сервисный экземпляр должен быть предоставлен на стороне сервера через OfferService() и обнаружен клиентом с помощью механизмов Service Discovery AUTOSAR_AP_EXP_ARAComAPI §4.2 «Means of Communication».
По сравнению с подписками на события ([SWS_CM_00141]) и поля ([SWS_CM_11601]), Subscribe обладает специфическими свойствами для триггеров:
Параметры и кэш: функция не принимает параметров (void Subscribe() noexcept) [SWS_CM_00723]. Поскольку триггеры передают исключительно уведомления без выборок данных, стандартное для событий резервирование локального кэша выборок через maxSampleCount[SWS_CM_00141] отсутствует.
Возвращаемое значение: возвращается не ara::core::Result, а void[SWS_CM_00723].
Для жизненного цикла и обработки ошибок действуют следующие условия:
Проверка состояния и идемпотентность: если триггер в момент вызова уже находится в состоянии kSubscribed или kSubscriptionPending, метод немедленно завершает работу без выполнения каких-либо действий [SWS_CM_00723].
Безопасность исключений: функция специфицирована как noexcept и exception safe[SWS_CM_00723].
Контроль доступа: при недостаточных правах механизм принудительного предоставления разрешений (grant enforcement) отклоняет выполнение с InsufficientPermissionsViolation[SWS_CM_00723].
Это указание по использованию было создано ИИ и основано исключительно на требованиях спецификации AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 78176c7d7eddПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Синхронная функция UnsetReceiveHandler в пространстве имен <SI-Namespace>::proxy::triggers::<Trigger> служит для деактивации ранее зарегистрированного обработчика приема для сервисного триггера на стороне прокси [SWS_CM_11614]. Функция требует подключения заголовочного файла #include "<SiNamespaceDerivedDirectoryPath>/<SiShortname>_proxy.h", не принимает входных параметров и не имеет возвращаемого значения.
В отличие от аналогичных функций для сервисных событий [SWS_CM_00183] и сервисных полей [SWS_CM_11606], которые явно специфицированы как noexcept и безопасные относительно исключений, UnsetReceiveHandler для триггеров объявлена как небезопасная относительно исключений (not exception safe) [SWS_CM_11614]. Интерпретация: вызывающим сторонам следует быть готовыми к тому, что при внутренних ошибках коммуникационной инфраструктуры могут генерироваться исключения, хотя конкретные типы исключений или коды ошибок в стандарте не приведены. Вопрос Q-92e16243a7ddee35 (открытый)
Взаимодействие и связывания
Метод является составной частью классов триггеров в пространстве имен прокси (AUTOSAR_AP_EXP_ARAComAPI §5.3.1). При использовании DDS-связывания вызов метода согласно [SWS_CM_11141] отображается через назначенный DataReader по правилам, определенным в [SWS_CM_11026].
Это указание по использованию было создано автоматически и основано исключительно на спецификациях AUTOSAR Adaptive релиза R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: de69ae0196a3ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция UnsetSubscriptionStateChangeHandler служит на стороне клиента для удаления ранее зарегистрированного обратного вызова для изменений состояния подписки (ara::com::SubscriptionState) триггера [SWS_CM_01108]. Она объявлена в области видимости <SI-Namespace>::proxy::triggers::<Trigger> и подключается через заголовочный файл #include "<SiNamespaceDerivedDirectoryPath>/<SiShortname>_proxy.h"[SWS_CM_01108].
Использование и контекст вызова
Метод имеет сигнатуру void UnsetSubscriptionStateChangeHandler () noexcept;, не принимает входных параметров и не возвращает значения [SWS_CM_01108]. Он вызывается синхронно на экземпляре соответствующего триггера класса прокси для отмены уведомлений при изменениях состояния подписки AUTOSAR_AP_EXP_ARAComAPI §5.3.1 «Proxy Class API’s». Интерпретация: после выполнения вызова новые изменения состояния, вероятно, больше не будут доставляться прежнему обработчику. Вопрос Q-d08dc975aacba85c (открытый)
Обработка ошибок и параллелизм
Интерфейс объявлен как noexcept и явно специфицирован как безопасный относительно исключений (exception safe) [SWS_CM_01108]. Сбой вызова или генерация исключений исключены, и возвращаемые значения ошибок отсутствуют.
Provides the possibility to unregister a previously set ara::com::e2e:: TransportFaultConditionHandler for a given Proxy Trigger.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: e7e7522ccae0ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция UnsetTransportFaultConditionHandler служит для повторного снятия с регистрации ранее зарегистрированного ara::com::e2e::TransportFaultConditionHandler для определённого триггера прокси ([SWS_CM_00108], задокументировано в AUTOSAR_AP_SWS_CommunicationManagement §8.3.7.1.1.3 «UnsetTransportFaultConditionHandler»). Она расположена в пространстве имён <SI-Namespace>::proxy::triggers::<Trigger> и подключается через заголовочный файл #include "<SiNamespaceDerivedDirectoryPath>/<SiShortname>_proxy.h" ([SWS_CM_00108]).
Сигнатура имеет вид void UnsetTransportFaultConditionHandler() noexcept;. Вызов не принимает параметров и не возвращает значения ([SWS_CM_00108]). Благодаря объявлению noexcept и классификации как exception safe функция в штатном режиме не генерирует исключений ([SWS_CM_00108]). Специфические коды ошибок, каналы ошибок или резервные значения в спецификации не предусмотрены.
Что касается процесса выполнения, функция синхронно разрывает связь с подпрограммой обработки ошибок; следовательно, после успешного выполнения дальнейшие уведомления о транспортных ошибках E2E для затронутого триггера не должны доставляться прежнему обработчику (Интерпретация). Вопрос Q-ae8477bc6530e352 (открытый)
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал