클라이언트 애플리케이션이 서비스 이벤트를 구독하고 새 데이터 샘플을 타입 안전하게 수신할 수 있도록 합니다.
AI 생성미검증모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 056774d8023a출처열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문
클라이언트 애플리케이션이 서비스 이벤트를 구독하고 새 데이터 샘플을 타입 안전하게 수신할 수 있도록 합니다.
인터페이스 클래스 <SI-Namespace>::proxy::events::<Event>은 AUTOSAR Adaptive Platform의 클라이언트 애플리케이션이 com 모듈을 통해 컨슈머 측에서 서비스 이벤트를 수신할 수 있도록 합니다. 일반적인 흐름에는 Subscribe[SWS_CM_00141]을 통한 구독 요청, 등록된 핸들러를 통한 반응형 알림, 그리고 GetNewSamples[SWS_CM_00701]를 사용한 동기식 샘플 검색이 포함됩니다. 이때 구독 시 예약된 것보다 더 많은 샘플 포인터를 동시에 보유해서는 안 되며, Unsubscribe을 통한 등록 해제 전에 모든 참조가 해제되어야 합니다.
컨텍스트
C++ 클래스 <SI-Namespace>::proxy::events::<Event>은 AUTOSAR Adaptive Platform(Release R25-11)의 com 모듈에서 서비스 이벤트를 위한 컨슈머 측 인터페이스를 나타냅니다. 서비스 지향 통신 패턴 내에서 생성된 이 클래스는 서버 스켈레톤이 제공하는 이벤트의 로컬 표현자 역할을 합니다. 클라이언트 애플리케이션은 이 클래스의 인스턴스를 사용하여 이벤트 데이터를 구독하고, 통신 네트워크에서 들어오는 샘플(Samples)을 수신하며, 컨슈머 측에서 이들의 라이프사이클을 제어합니다 AUTOSAR_AP_EXP_ARAComAPI 10쪽.
이 클래스의 주요 상호작용 파트너는 다음과 같습니다:
애플리케이션(Subscriber):Subscribe[SWS_CM_00141]을 통해 이벤트 구독 등록을 시작하고, 데이터 수신 및 상태 변경을 위한 콜백 루틴을 등록하며, GetNewSamples[SWS_CM_00701]을 통해 새 샘플을 쿼리합니다.
Communication Management: 기본 미들웨어를 통해 이벤트 데이터 전송을 조정하고, 네트워크 상태를 관리하며, 새 이벤트가 도착하거나 상태가 변경될 때 등록된 알림 핸들러를 실행합니다 [SWS_CM_00181], [SWS_CM_00333].
<SI-Namespace>::proxy::events::<Event>의 인스턴스화 및 소멸은 상위 프록시 클래스의 멤버로서 서비스 프록시의 수명에 밀접하게 연결되어 있을 것으로 보입니다. 질문 Q-6c591ea580278c12 (열림) 생성 후 이벤트는 초기에 구독되지 않은 상태에 있습니다. 현재 구독 상태는 언제든지 GetSubscriptionState을 통해 쿼리할 수 있으며, 이 함수는 상태를 ara::com::SubscriptionState로 반환합니다 [SWS_CM_00316].
활성 구독 상태로의 전이는 Subscribe을 통해 시작되며, 동시에 사용 가능한 최대 캐시 슬롯 수는 maxSampleCount을 통해 정의됩니다 [SWS_CM_00141]. 호출 시점에 이벤트가 이미 kSubscribed 또는 kSubscriptionPending 상태에 있고 전달된 값이 현재 값과 일치하는 경우, 호출은 아무런 영향을 미치지 않습니다 [SWS_CM_00141]. Communication Management는 SetSubscriptionStateChangeHandler[SWS_CM_00333]을 사용하거나 실행 컨텍스트와 함께 SetSubscriptionStateChangeHandler[SWS_CM_11354]를 통해 등록된 핸들러를 통해 구독의 상태 변경을 알립니다. 이 등록은 UnsetSubscriptionStateChangeHandler을 통해 취소할 수 있습니다 [SWS_CM_00334]AUTOSAR_AP_EXP_ARAComAPI 10쪽.
또한 이 클래스는 종단 간 보호(E2E) 상태를 관리합니다. GetE2EStateMachineState을 통해 GetNewSamples() 도중 E2E_Check()가 마지막으로 내부 호출되었을 때 확인된 E2E 상태 머신의 상태 ara::com::e2e::SMState이 결정됩니다 [SWS_CM_11554]. 전송 오류 상태는 SetTransportFaultConditionHandler[SWS_CM_00099] 또는 [SWS_CM_00100]을 통해 설정되고 UnsetTransportFaultConditionHandler[SWS_CM_00105]를 통해 제거되는 핸들러로 모니터링할 수 있습니다.
클래스 사용 시 방어적 검사가 필요한 특정 오류 코드 및 런타임 위반이 발생할 수 있습니다:
재구독 시 구성 오류: 이벤트가 이미 구독된 상태에서 Subscribe이 호출되고 새 maxSampleCount이 현재 값과 다를 경우, 해당 호출은 오류 코드 ComErrc::kMaxSampleCountNotRealizable와 함께 실패합니다 [SWS_CM_00141]. 권한이 없는 경우 시스템은 InsufficientPermissionsViolation[SWS_CM_00141]와 함께 실행을 거부합니다.
버퍼 제한 초과: 애플리케이션이 이전 Subscribe 호출에서 보장된 것보다 많은 ara::com::SamplePtr 인스턴스를 보유하는 경우, GetNewSamples는 오류 코드 ComErrc::kMaxSamplesExceeded을 반환합니다. 이 경우 데이터 샘플이 폐기되었을 수 있습니다 [SWS_CM_00701].
Returns the state of the specific event class, which was determined by the last run of E2E_Check() function invoked during the last call of GetNewSamples()
Method to subscribe to a service event. If the Event is already in state kSubscribed or in state kSubscriptionPending at the time of the call, and the provided maxSampleCount value is the same as for the current subscription, the method shall return without action.
Returns the state of the specific event class, which was determined by the last run of E2E_Check() function invoked during the last call of GetNewSamples()
• If successful: an ara::core::Result containing a ara:: core::Result::value_type i.e. a std::size_t the total number of data samples passed to f • If unsuccessful: an ara::core::Result containing an ara:: core::Result::error_type i.e. a corresponding ara:: com::ComErrc
Fehler
Fehlercode
Beschreibung
ComErrc::kMaxSamplesExceeded
no_rollback_semantics Application holds more ara::com::SamplePtrs than commited in Subscribe() Samples were possibly skipped.
Request a governed re-review of this record. The record is not changed immediately.
AI 생성미검증모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 262c351f3d58출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문
사용
SetReceiveHandler 함수는 클라이언트 측 <SI-Namespace>::proxy::events::<Event> 스코프에서 도달하는 이벤트에 대한 콜백 핸들러를 등록하는 데 사용됩니다[SWS_CM_00181]. 매개변수로는 매개변수가 없는 함수로 정의되고 이벤트 수신 시 Communication Management에 의해 호출되는 ara::com::EventReceiveHandler이(가) 전달됩니다[SWS_CM_00181]. 이 함수는 반환값을 갖지 않습니다(void)[SWS_CM_00181].
오류 처리 및 예외 동작
해당 작업은 noexcept 및 예외 안전(exception safe)으로 명시되어 있습니다[SWS_CM_00181]. 전달된 Callable이 존재하지 않거나 null인 경우 이는 InvalidHandlerViolation(으)로 간주됩니다[SWS_CM_00181].
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 event arrival. The EventReceiveHandler constitutes a function without parameters and has to use the f method of the specific Event class to access the retrieved event data. See [SWS_CM_00309] for its definition.
AI 생성미검증모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: a54152e96424출처열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문
네임스페이스 proxy::events::<Event>의 메서드 SetSubscriptionStateChangeHandler은 이벤트의 상태 ara::com::SubscriptionState이(가) 변경되는 즉시 Communication Management가 호출하는 콜백 함수를 등록합니다([SWS_CM_00333]). 이 함수는 noexcept(으)로 선언되어 있으며 예외 안전한 것으로 간주됩니다([SWS_CM_00333]).
사용 및 비동기 시맨틱
Subscribe() 호출은 원칙적으로 비동기식으로 동작합니다. 등록된 핸들러 또는 GetSubscriptionState()이(가) kSubscribed 상태를 반환할 때에만 성공적인 구독이 완료된 것으로 간주할 수 있습니다([SWS_CM_12006]). (예컨대 버스 프로토콜 지연 시간으로 인해) 구독이 즉각 효력을 발휘하지 않거나 재부팅 또는 네트워크 오류로 인해 서버 인스턴스에 도달할 수 없는 경우 핸들러는 kSubscriptionPending(으)로 호출됩니다([SWS_CM_00313]). 핸들러 등록 취소는 UnsetSubscriptionStateChangeHandler()을(를) 통해 수행됩니다(EXP ARAComAPI §5.3.1 “Proxy Class API’s”).
오류 처리 및 제약 조건
유효한 콜백 객체가 전달되지 않거나 이것이 null인 경우 InvalidHandlerViolation 오류 상황이 발생합니다([SWS_CM_00333]). 호출 순서와 관련하여 초기 상태 전이를 안정적으로 감지하기 위해 핸들러는 Subscribe() 이전에 등록하는 것이 적절할 것으로 추정됩니다. 질문 Q-3b9c25c6aa2d0a0f (열림)
이 함수는 noexcept(으)로 선언되어 있으며 예외에 안전(exception safe)한 것으로 명시되어 있습니다. 전달된 Callable handler이(가) 존재하지 않거나 null인 경우 InvalidHandlerViolation이(가) 발생합니다([SWS_CM_11354]).
AI 생성미검증모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: f1aa03e805b1출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문
멤버 함수 SetTransportFaultConditionHandler은 프록시 이벤트([SWS_CM_00099])에서 ara::com::e2e::TransportFaultConditionHandler 타입의 콜백 함수를 등록하는 데 사용됩니다. 이 핸들러를 통해 통신 바인딩의 전송 계층에서 감지된 전송 오류가 보고됩니다([SWS_CM_00211]).
사용법 및 의미 체계:
호출 및 매개변수: 이 함수는 호출 가능한 핸들러 객체 handler을(를) 받고 반환값을 반환하지 않습니다([SWS_CM_00099]). 메서드 시그니처는 noexcept(으)로 선언되어 있습니다([SWS_CM_00099]).
전송되는 오류 상태: 등록된 핸들러는 오류 발생 시 기반 전송 채널의 폐기된 샘플에 대한 kSampleRejected과 같은 열거형 ara::com::e2e::TransportFaultCondition의 값을 보고합니다([SWS_CM_00211]).
실행 컨텍스트: 비동기 실행을 위해 추가 Executor 객체 ExecutorT&& executor을(를) 갖는 템플릿 오버로드가 제공됩니다([SWS_CM_00100]).
오류 처리 및 제약 조건:
예외 안전성: 이 함수는 예외에 안전(exception safe)한 것으로 간주됩니다([SWS_CM_00099]).
위반 사항: 전달된 Callable이 존재하지 않거나 null인 경우 InvalidHandlerViolation이(가) 발생합니다([SWS_CM_00099]).
Execution Context overload for hierarchicalnamespacelistlowerproxy::proxy:: events::eventname::SetTransportFaultConditionHandler for a given Proxy Event.
AI 생성미검증모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 45577c09ced5출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문
템플릿 함수 SetTransportFaultConditionHandler은 프록시 이벤트에서 사용자 정의 Executor([SWS_CM_00100])와 함께 ara::com::e2e::TransportFaultConditionHandler 타입의 애플리케이션별 핸들러를 등록합니다. 이 함수는 매개변수가 더 적은 기본 함수에 대한 Execution-Context 오버로드를 나타냅니다([SWS_CM_00099]).
사용법 및 매개변수: 이 메서드는 <SI-Namespace>::proxy::events::<Event> 인스턴스에서 호출되며 값을 반환하지 않습니다(void) ([SWS_CM_00100]). 호출할 핸들러(handler)를 전달받고 핸들러의 비동기 실행이 시작되는 컨텍스트인 Executor 객체(보편 참조 ExecutorT&&로서의 executor)를 전달받습니다([SWS_CM_00100]). 함수 시그니처는 noexcept(으)로 선언되어 있습니다([SWS_CM_00100]).
오류 처리: 이 연산은 exception safe(으)로 명시되어 있습니다([SWS_CM_00100]). 유효하지 않거나 존재하지 않는 Callable(null)이 전달되면 InvalidHandlerViolation 형태의 위반이 발생합니다([SWS_CM_00100]). 기반 전송 엔터티에 의한 수신 데이터 샘플 폐기 시의 TransportFaultCondition::kSampleRejected와 같이 감지된 전송 오류는 등록된 핸들러를 통해 보고됩니다([SWS_CM_00211]).
Method to subscribe to a service event. If the Event is already in state kSubscribed or in state kSubscriptionPending at the time of the call, and the provided maxSampleCount value is the same as for the current subscription, the method shall return without action.
AI 생성미검증모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 7e840633f446출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문
호출 시 이벤트가 이미 kSubscribed 또는 kSubscriptionPending 상태에 있고 전달된 값 maxSampleCount이(가) 활성 구독과 일치하는 경우, 메서드는 아무 작업 없이 성공적으로 반환됩니다([SWS_CM_00141]). 반면 재구독 시 캐시 크기가 다른 경우 호출이 실패하고 ara::core::Result에 오류 코드 ComErrc::kMaxSampleCountNotRealizable을(를) 반환합니다([SWS_CM_00141]). 액세스 권한이 없는 경우 호출이 거부됩니다([SWS_CM_00141]에 따른 InsufficientPermissionsViolation). 시그니처는 noexcept(으)로 선언되어 있으며 예외에 안전한 것으로 간주됩니다.
상호 작용
예약된 캐시 용량은 향후 GetNewSamples을(를) 통한 데이터 수신을 제한하며([SWS_CM_00701]), 애플리케이션이 지정된 것보다 많은 스마트 포인터를 보유하는 경우 오류 ComErrc::kMaxSamplesExceeded이(가) 트리거됩니다([SWS_CM_10432]). 필드 이벤트가 maxSampleCount을(를) 통해 동일하게 구독되는 반면([SWS_CM_11601]), 순수 트리거 이벤트는 버퍼 크기 지정을 요구하지 않습니다([SWS_CM_00723]).
• If successful: an ara::core::Result containing a ara:: core::Result::value_type containing a void • If unsuccessful: an ara::core::Result containing an ara:: core::Result::error_type i.e. a corresponding ara:: com::ComErrc
Fehler
Fehlercode
Beschreibung
ComErrc::kMaxSampleCountNotRealizable
rollback_semantics Provided maxSampleCount for event re-subscription does not match the maxSampleCount for the current subscription
Request a governed re-review of this record. The record is not changed immediately.
AI 생성미검증모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 51bbc4b93d81출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문
사용
함수 UnsetReceiveHandler은 스코프 <SI-Namespace>::proxy::events::<Event>의 이벤트 래퍼의 일부이며 헤더 파일 #include "<SiNamespaceDerivedDirectoryPath>/<SiShortname>_proxy.h"를 통해 포함됩니다([SWS_CM_00183]). 전달 매개변수를 받지 않으며 반환값이 없습니다(void). 이 호출을 통해 이전에 SetReceiveHandler로 등록된 서비스 이벤트용 애플리케이션별 수신 핸들러가 다시 제거됩니다(EXP ARAComAPI §5.3.2 “RadarService Proxy Class Example”). 이를 통해 수신 애플리케이션은 GetNewSamples()을 사용한 이벤트 구동(“event-driven”) 수신과 능동적 폴링 방식(“polling style”) 사이를 언제든지 전환할 수 있습니다(EXP ARAComAPI §5.3.2 “RadarService Proxy Class Example”).
오류 처리
이 메서드는 noexcept으로 선언되어 있으며 exception safe 속성을 가집니다([SWS_CM_00183]). 런타임에 예외를 발생시키지 않으며 특정 오류 코드를 반환하지 않습니다.
필드의 경우 스코프 <SI-Namespace>::proxy::fields::<Field>에 동일한 이름의 함수 UnsetReceiveHandler이 존재하며, 이는 마찬가지로 noexcept 및 exception safe으로 정의되어 있습니다([SWS_CM_11606]).
트리거의 경우 스코프 <SI-Namespace>::proxy::triggers::<Trigger>에서 UnsetReceiveHandler을 사용할 수 있지만 이와 다르게 not exception safe로 선언되어 있습니다([SWS_CM_11614]).
이 사용 지침은 릴리스 R25-11에 대한 AUTOSAR 사양을 기반으로 자동 생성되었습니다.
명세에 따르면 이 함수는 식별자 noexcept(으)로 선언되어 있으며 예외 안전(“exception safe”)으로 분류되어 있습니다([SWS_CM_00334]). 오류 발생 시 C++ 예외를 발생시키지 않으며 오류 코드를 반환하지 않습니다([SWS_CM_00334]).
이 함수는 식별자 noexcept(으)로 선언되어 있으며 예외 안전(exception safe)으로 명시되어 있습니다 [SWS_CM_00105]. 표준에는 특정 오류 코드나 오류 또는 진단 하위 시스템에 대한 알림이 정의되어 있지 않습니다.
프로세스 및 경계 조건
예를 들어 이벤트를 더 이상 모니터링하지 않아야 하거나 연결된 프록시 객체가 해제되기 전에 이벤트 수준에서 E2E 오류 처리를 즉시 비활성화하기 위해 호출이 동기식으로 실행될 것입니다(해석). 질문 Q-ff00695fff5407fe (열림) 실행 후 통신 계층은 이 이벤트의 이전에 저장된 콜백을 통해 E2E 전송 오류를 더 이상 처리하지 않습니다.
상호 작용
전송 오류에 대한 핸들러 등록 취소는 다양한 통신 요소 전반에 걸쳐 일관된 패턴을 따릅니다:
Method to unsubscribe from a service event. If the Event is not subscribed to at the time of the call, the method shall return without action.
AI 생성미검증모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: fb295b3ef414출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문
사용
메서드 Unsubscribe()은(는) 프록시 측에서 서비스 이벤트의 활성 구독을 종료합니다([SWS_CM_00151], EXP_ARAComAPI §5.5). 이는 범위 <SI-Namespace>::proxy::events::<Event>에 정의되어 있으며 헤더 파일 #include "<SiNamespaceDerivedDirectoryPath>/<SiShortname>_proxy.h"을(를) 통해 포함됩니다([SWS_CM_00151]). 이 함수는 전달 매개변수를 받지 않으며 반환값을 제공하지 않습니다(void). 호출 시점에 이벤트가 구독되지 않은 경우, 메서드는 아무런 동작도 수행하지 않고 반환됩니다([SWS_CM_00151]).
오류 처리 및 예외 안전성
이 작업은 식별자 noexcept(으)로 선언되어 있으며 예외 안전(exception-safe)으로 명시되어 있습니다([SWS_CM_00151]). 메서드 호출 전에 [SWS_CM_00085]에 따른 전제조건을 위반한 경우 위반(Violation)으로 DanglingSamplesViolation이(가) 정의되어 있습니다([SWS_CM_00151]).
gemini-3.8-flash-low· 2026-10-13 · 독일어 원문