FileAccessor contains a common basis for ReadAccessor and WriteAccessor. It provides methods for checking and setting the current position in the file (GetPosition, Set Position, MovePosition, IsEof) and for checking the current size of the file (GetSize).
Sirve como clase base común para la consulta del tamaño de archivo y la navegación de posición para accesos a archivos especializados.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: e1768b56d42cProcedenciaPreguntas abiertas (2)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Sirve como clase base común para la consulta del tamaño de archivo y la navegación de posición para accesos a archivos especializados.
La clase ara::per::FileAccessor sirve en el módulo de persistencia de AUTOSAR como clase base común para la navegación de posición y la comprobación de tamaño de accesos ordenados a archivos ([SWS_PER_00424]). Impide la instanciación directa así como los procesos de copia mediante constructores eliminados ([SWS_PER_00589]). En caso de indicaciones de posición no válidas, se aplica una semántica de reversión que protege la posición actual del puntero. Todas las operaciones son seguras ante excepciones, pero requieren sincronización externa en caso de uso concurrente.
Contexto
La clase ara::per::FileAccessor sirve en el módulo de persistencia (ara::per) de la AUTOSAR Adaptive Platform como clase base abstracta común para objetos de acceso a archivos como ReadAccessor y WriteAccessor. Su responsabilidad central es la interfaz uniforme para la gestión de posición y comprobación de tamaño relativas a archivos. La clase actúa como instancia de control para el cursor de lectura y escritura dentro de un archivo abierto, pero no contiene por sí misma métodos para la transferencia real de datos (como lectura o escritura de bytes). La navegación se realiza de forma absoluta desde el inicio del archivo o bien de forma relativa respecto a puntos de referencia definidos.
Ciclo de vida
La clase ara::per::FileAccessor no se puede instanciar directamente ni copiar libremente. El constructor por defecto está eliminado ([SWS_PER_00589]), al igual que el constructor de copia ([SWS_PER_00592]) y el operador de asignación por copia ([SWS_PER_00593]). Las semánticas de movimiento también están explícitamente impedidas: tanto el constructor de movimiento ([SWS_PER_00590]) como el operador de asignación por movimiento ([SWS_PER_00591]) están eliminados. De ello se deduce la interpretación de que las instancias se crean y gestionan exclusivamente en el contexto de subclases concretas.
El destructor virtual ~FileAccessor() ([SWS_PER_00594]) garantiza una liberación segura, permitiendo una destrucción polimórfica a través de punteros a la clase base. En cuanto a la concurrencia, todas las funciones miembro están especificadas como no seguras para hilos ([SWS_PER_00162], [SWS_PER_00424], [SWS_PER_00107], [SWS_PER_00163], [SWS_PER_00164]). En consecuencia, los accesos concurrentes de diferentes hilos a la misma instancia deben ser sincronizados por la aplicación.
Ruta de uso
El uso típico de FileAccessor comprende la consulta del tamaño de archivo, la determinación de la posición momentánea, así como desplazamientos de posición dirigidos para preparar accesos de lectura o escritura:
Consulta de tamaño: mediante GetSize() se determina el tamaño actual del archivo en bytes ([SWS_PER_00424]).
Consulta de posición: con GetPosition(), la aplicación consulta el desplazamiento en bytes actual desde el inicio del archivo, el cual también puede encontrarse exactamente al final del archivo ([SWS_PER_00162]).
Posicionamiento absoluto:SetPosition() establece el cursor en un desplazamiento absoluto desde el inicio del archivo ([SWS_PER_00163]).
Desplazamiento relativo:MovePosition() desplaza el cursor a partir de Origin::kBeginning, Origin::kCurrent o Origin::kEnd en un desplazamiento con signo ([SWS_PER_00164]).
Comprobación de fin de archivo: el método IsEof() indica si la posición actual ha alcanzado el fin de archivo ([SWS_PER_00107]).
Todas las operaciones de FileAccessor están declaradas como seguras ante excepciones (noexcept). Los posibles estados de error en llamadas de navegación se devuelven a través de ara::core::Result:
Si una aplicación intenta acceder a una posición más allá del final del archivo mediante SetPosition(), la llamada falla con el código de error PerErrc::kInvalidPosition ([SWS_PER_00163]). Lo mismo se aplica a MovePosition() en caso de que la posición de destino calculada resulte negativa o se sitúe detrás del final del archivo ([SWS_PER_00164]). Para ambos métodos es obligatoria una estricta semántica de reversión: si se produce un error, la posición previamente válida del archivo se mantiene inalterada ([SWS_PER_00163], [SWS_PER_00164]).
Los métodos de consulta GetSize() ([SWS_PER_00424]), GetPosition() ([SWS_PER_00162]) y IsEof() ([SWS_PER_00107]) devuelven directamente tipos de datos básicos y no generan códigos de error específicos.
Una IA ha redactado este texto sobre la base de la especificación AUTOSAR R25-11. Complementa la documentación normativa con una visión de conjunto de la abstracción de navegación.
Moves the current position in the file relative to the Origin. In case of an error, the current position is not changed.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 436bd0736ae4Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
usar
El método síncrono MovePosition de la clase ara::per::FileAccessor desplaza la posición actual del archivo de forma relativa a un punto de referencia definido [SWS_PER_00164]. La función está declarada como noexcept[SWS_PER_00164]. Como parámetros toma el punto de origen origin de tipo Origin, así como el desplazamiento de bytes con signo offset[SWS_PER_00164]. En caso de ejecución correcta, el método devuelve un ara::core::Result con la posición absoluta resultante en bytes a partir del inicio del archivo [SWS_PER_00164].
Interacción y valores de los parámetros
El punto de referencia origin se determina mediante la enumeración Origin[SWS_PER_00146]:
Origin::kBeginning: desplazamiento desde el inicio del archivo; offset puede ser positivo en este caso [SWS_PER_00164], [SWS_PER_00146].
Origin::kCurrent: desplazamiento desde la posición actual del archivo; offset puede ser positivo o negativo, donde un valor de cero no modifica la posición [SWS_PER_00164], [SWS_PER_00146].
Origin::kEnd: desplazamiento relativo al final del archivo; offset puede ser negativo, mientras que un desplazamiento de cero establece la posición exactamente al final del archivo [SWS_PER_00164], [SWS_PER_00146].
Manejo de errores
En caso de error, la posición previa del archivo no se modifica gracias a una semántica de reversión [SWS_PER_00164]. Si el punto de destino calculado resulta en un valor menor que cero o si este queda más allá del final del archivo, se devuelve el código de error PerErrc::kInvalidPosition[SWS_PER_00164]. Además, el resultado puede contener errores específicos del fabricante [SWS_PER_00164].
Concurrencia y restricciones
El método está especificado como exception safe[SWS_PER_00164]. Dado que la implementación está catalogada como not thread-safe, los accesos paralelos a la misma instancia de FileAccessor deben ser sincronizados por parte del llamador [SWS_PER_00164].
Este texto fue creado por un sistema de IA y curado por autodocs.
Offset in bytes relative to ’origin’. Can be positive in case of k Beginning and kCurrent and negative in case of kCurrent and k End. In case of kCurrent, an offset of zero will not change the current position. In case of kEnd, an offset of zero will set the position to the end of the file.
A Result containing the new position in bytes from the beginning of the file. In case of an error, it contains any of the errors defined below, or a vendor specific error.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán