The ara::com::SamplePtr behaves as a std::unique_ptr as long as the event/ field is subscribed to, or the Proxy it belongs to is not destroyed. The precondition defined in [SWS_CM_00085] and [SWS_CM_00087] must be fulfilled. Otherwise it is considered a violation.
Note: The SamplePtr is always passed with a const SampleType to the callable in GetNewSamples() (see [SWS_CM_00701]). Therefore the sample datatype (typename T) and the SamplePtr operators using the sample datatype (typename T) are implicitly declared as const. This means that the sample data will always be read-only.
Permite el acceso de lectura exclusivo a eventos recibidos y controla el tiempo de vida de la memoria del middleware.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: f5d97c2beaf2ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Permite el acceso de lectura exclusivo a eventos recibidos y controla el tiempo de vida de la memoria del middleware.
La clase plantilla encapsula la propiedad exclusiva de muestras de eventos recibidas siguiendo el modelo de std::unique_ptr y otorga a la aplicación acceso de lectura directo e inmutable a los búferes del middleware (EXP ARAComAPI §5.3.5.4). Las instancias se entregan al consultar nuevas muestras, solo pueden transferirse mediante semántica de movimiento y mantienen ocupado el espacio de memoria ([SWS_CM_11537]). Solo la destrucción del puntero o una puesta a cero explícita vuelve a liberar la ranura del búfer. La validez presupone que el evento permanezca suscrito y que el proxy correspondiente exista.
Contexto
La clase plantilla ara::com::SamplePtr representa en la Adaptive Platform el modelo central de acceso y propiedad para datos de eventos recibidos (event samples) (EXP ARAComAPI §5.3.5.4). Semánticamente, la clase reproduce un puntero inteligente exclusivo siguiendo el modelo de std::unique_ptr (EXP ARAComAPI §5.3.5.4). Los participantes principales en la interacción son el nivel de aplicación, el objeto de evento o de proxy receptor y el middleware de comunicación subyacente ara::com, que gestiona los recursos de búfer (EXP ARAComAPI, p. 44, EXP ARAComAPI, p. 50).
El concepto persigue expresamente un enfoque zero-copy basado en referencias: en lugar de transferir datos de eventos a la aplicación mediante copia por valor, ara::com reenvía punteros o referencias a búferes de comunicación centrales (EXP ARAComAPI, p. 50). En escenarios de distribución 1:N típicos, las cachés de eventos locales pueden abastecerse así puramente mediante actualizaciones de referencias, lo que minimiza el consumo de memoria y la latencia (EXP ARAComAPI, p. 50). El acceso a los datos útiles está concebido de forma estrictamente de lectura: en la provisión, SamplePtr siempre se instancia con un tipo de datos útiles constante (ara::com::SamplePtr<SampleType const>), con lo cual todos los operadores de acceso son implícitamente constantes (EXP ARAComAPI, p. 39, EXP ARAComAPI, p. 44, [SWS_CM_00701]).
Ciclo de vida
Las instancias de SamplePtr pueden crearse como punteros vacíos mediante el constructor por defecto o con nullptr ([SWS_CM_11534], [SWS_CM_11535]). En cambio, las instancias válidas ocupadas con datos útiles se originan dentro del middleware durante la deserialización de eventos en ranuras de búfer y se transfieren en el marco de GetNewSamples() a un invocable (callable) del lado de la aplicación (EXP ARAComAPI, p. 44).
Con la entrega tiene lugar una transferencia completa de la propiedad (ownership transfer) a la aplicación (EXP ARAComAPI §5.3.5.4). Para garantizar la exclusividad de la propiedad, el constructor de copia y el operador de asignación por copia están eliminados ([SWS_CM_11536], [SWS_CM_11538]). La transferencia de la ranura de memoria gestionada solo es posible mediante construcción por movimiento o asignación por movimiento ([SWS_CM_11537], [SWS_CM_11540]), mientras que Swap() permite el intercambio del contenido de dos punteros ([SWS_CM_11544]).
Mientras exista una instancia de SamplePtr y retenga la muestra, el middleware no puede reclamar ni reescribir el espacio de memoria ocupado (EXP ARAComAPI §5.3.5.4). La liberación de la ranura del middleware solo se produce cuando la vida útil de SamplePtr finaliza mediante la invocación del destructor ([SWS_CM_11547]) o cuando el puntero se vacía explícitamente mediante Reset(nullptr) o asignación de nullptr ([SWS_CM_11539], [SWS_CM_11545]).
El flujo típico del acceso a datos se divide en los siguientes pasos:
Iniciar la consulta de muestras: La aplicación invoca GetNewSamples() en el proxy de eventos y transfiere una función de retrollamada adecuada con la signatura void(ara::com::SamplePtr<SampleType const>), así como un límite superior para la cantidad de muestras a recoger (EXP ARAComAPI, p. 44).
Entrega a la retrollamada: Si hay nuevos datos disponibles y el cupo de búfer no está agotado, el middleware deserializa la muestra y entrega la nueva instancia de SamplePtr a la retrollamada (EXP ARAComAPI, p. 44).
Comprobar el estado End-to-End: Mediante GetProfileCheckStatus(), la aplicación puede consultar el resultado de la comprobación de protección E2E para el paquete de datos en cuestión ([SWS_CM_90420]).
Leer datos: La lógica de aplicación accede en modo de lectura al objeto gestionado mediante operator* ([SWS_CM_11541]), operator-> ([SWS_CM_11542]) o el método Get() ([SWS_CM_11546]).
Procesamiento posterior o liberación: Si la muestra debe persistir más allá de la retrollamada, la aplicación desplaza el puntero a estructuras de memoria propias mediante construcción por movimiento ([SWS_CM_11537]). Si el puntero permanece en el ámbito de la retrollamada, se destruye automáticamente al salir de ella ([SWS_CM_11547]), lo que libera de inmediato la ranura en el middleware (EXP ARAComAPI §5.3.5.4).
Al utilizar SamplePtr deben tenerse en cuenta restricciones y fuentes de error específicas:
Agotamiento del cupo de búfer: En cada invocación de GetNewSamples(), el middleware monitoriza si la cantidad de muestras retenidas actualmente por la aplicación supera el cupo asegurado previamente al invocar Subscribe(). Si se supera el cupo, GetNewSamples() deniega la emisión de más muestras y devuelve en su lugar un ara::core::ErrorCode (EXP ARAComAPI, p. 44, EXP ARAComAPI, p. 45).
Invalidez por pérdida de suscripción o destrucción del proxy:SamplePtr solo se comporta de forma determinista como un std::unique_ptr mientras el evento subyacente permanezca suscrito y la instancia del proxy de nivel superior exista. Retener punteros más allá del fin de la suscripción o de la destrucción del proxy se considera una infracción de las precondiciones.
Validez del puntero y estado nulo: Mediante operator bool() se puede evaluar el estado de ocupación del puntero ([SWS_CM_11543]). La desreferenciación de un puntero vacío mediante operator* o operator-> conduce a un comportamiento indefinido. Todos los métodos de acceso y modificación están declarados como noexcept ([SWS_CM_11541], [SWS_CM_11542], [SWS_CM_11546]).
Error de validación E2E: Un puntero recibido válidamente no garantiza obligatoriamente datos de transmisión libres de errores; mediante el valor de retorno de GetProfileCheckStatus() la aplicación debe comprobar si la protección End-to-End señala corrupción de datos o retardos en la transmisión ([SWS_CM_90420]).
Esta guía de clase fue generada por un asistente de curación por IA sobre la base de las especificaciones AUTOSAR para la Adaptive Platform Release R25-11.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 1cc8beae7ae3ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Uso y semántica
La función Get es una función miembro sin parámetros de la clase ara::com::SamplePtr del encabezado ara/com/service/sample_ptr.h[SWS_CM_11546]. Devuelve de forma síncrona un puntero sin procesar de tipo T* al objeto gestionado por la instancia [SWS_CM_11546]. A diferencia de las consultas asíncronas de campos de servicio que proporcionan un ara::core::Future[SWS_CM_00112], este acceso tiene lugar de forma directa en el hilo llamador.
Tratamiento de errores y condiciones límite
El método está declarado como noexcept y especificado como seguro frente a excepciones (exception safe) [SWS_CM_11546]; no se producen estados de error mediante excepciones de C++. Si la instancia no gestiona actualmente ningún objeto, es de suponer que el puntero devuelto sea probablemente nullptr. Pregunta Q-d850bd8ee144369a (abierta) Antes de continuar procesando el dato referenciado, debe asegurarse de que la supervisión E2E presente el estado ara::com::e2e::SMState::kValid y que la comprobación de estado del perfil no haya arrojado ningún error [SWS_CM_90422].
Interacción y delimitación
En el Communication Management, Get sirve para el acceso directo a los datos de valores recibidos (samples), tal como se proporcionan en el marco de la gestión de muestras AUTOSAR_AP_EXP_ARAComAPI §10 «GetNewSamples». Esta función debe distinguirse con claridad de otras operaciones de Get:
Getter de campo: La consulta de campos de servicio en el proxy se realiza mediante Get() con el retorno de un ara::core::Future[SWS_CM_00112], para lo cual se puede registrar un manejador en el lado del servidor [SWS_CM_00114].
Estado E2E: El estado de supervisión de un getter de campo se determina de forma independiente mediante GetE2EStateMachineStateGetter[SWS_CM_00145].
Este texto ha sido generado por una IA y se basa en la versión R25-11 de AUTOSAR.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 0a03c7966b10ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
La función miembro Reset de la clase ara::com::SamplePtr sirve para restablecer el puntero al objeto gestionado [SWS_CM_11545]. Como parámetro asume el valor other de tipo std::nullptr_t. La llamada sustituye el objeto actualmente retenido por un puntero nulo y no devuelve ningún valor (void) [SWS_CM_11545].
En lo que concierne al tratamiento de fallos y a la seguridad frente a excepciones, el método está declarado con noexcept y especificado como inequívocamente seguro frente a excepciones (exception safe) [SWS_CM_11545]. No se lanzan excepciones de C++ ni se notifican códigos de error específicos.
En el sistema global, la liberación de instancias de SamplePtr cumple una precondición fundamental para evitar errores de memoria:
Una obligación comparable formula [SWS_CM_00085] antes de cancelar la suscripción a eventos o campos (Unsubscription).
Interpretación: La llamada explícita a Reset(nullptr) probablemente constituya en escenarios de aplicación el medio directo para renunciar de manera determinista a la propiedad de una muestra de evento antes de tales transiciones de ciclo de vida, en caso de que el puntero no abandone automáticamente su ámbito de validez. Pregunta Q-a615fa4078ab03ce (abierta)
Esta nota de uso se ha generado de forma automatizada sobre la base de la especificación AUTOSAR R25-11.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 18d4b3f3f0f9ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
usar
La función Swap es un método miembro de la clase ara::com::SamplePtr y sirve para intercambiar el objeto actualmente gestionado con otra instancia ([SWS_CM_11544]). La interfaz está definida en el encabezado ara/com/service/sample_ptr.h (AUTOSAR_AP_SWS_CommunicationManagement §8.9.1.1.3.4 «Swap»).
La llamada se produce de forma síncrona y espera el siguiente parámetro:
other: Referencia a otra instancia de ara::com::SamplePtr cuyo objeto gestionado se intercambia con el de *this ([SWS_CM_11544]).
El método no tiene valor de retorno (void) ([SWS_CM_11544]).
Manejo de errores
La signatura está declarada con noexcept y clasificada como segura frente a excepciones (exception safe) ([SWS_CM_11544]). La invocación no desencadena excepciones ni devuelve códigos de error.
Concurrencia y restricciones
Dado que Swap modifica el estado de dos objetos (*this y other) de manera simultánea, es de suponer que las llamadas concurrentes sobre al menos una de las instancias involucradas probablemente no sean seguras para subprocesos sin sincronización externa. Pregunta Q-d906e8c05aefbd15 (abierta)
Interacción
El método es parte integral de la clase ara::com::SamplePtr ([SWS_CM_11544]). Permite la transferencia eficiente de propiedad o la reasignación de muestras de datos recibidas en secuencias de comunicación, sin que sea necesario copiar el objeto de datos de carga útil subyacente.
Esta nota de uso se ha generado automáticamente a partir de los documentos de especificación.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán