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).
Serve como classe base comum para consulta de tamanho de arquivo e navegação de posição para acessos a arquivos especializados.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: e1768b56d42cProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Serve como classe base comum para consulta de tamanho de arquivo e navegação de posição para acessos a arquivos especializados.
A classe ara::per::FileAccessor serve no módulo de persistência AUTOSAR como classe base comum para navegação de posição e verificação de tamanho de acessos ordenados a arquivos ([SWS_PER_00424]). Ela impede a instanciação direta, bem como operações de cópia, por meio de construtores excluídos ([SWS_PER_00589]). Em caso de especificações de posição inválidas, entra em ação uma semântica de rollback que protege a posição atual do ponteiro. Todas as operações são seguras contra exceções, mas exigem sincronização externa em caso de uso concorrente.
Contexto
A classe ara::per::FileAccessor serve no módulo de persistência (ara::per) da AUTOSAR Adaptive Platform como classe base abstrata comum para objetos de acesso a arquivos como ReadAccessor e WriteAccessor. Sua responsabilidade central é a interface uniforme para o gerenciamento de posição relacionado ao arquivo e a verificação de tamanho. A classe atua como instância de controle para o cursor de leitura e escrita dentro de um arquivo aberto, mas ela própria não contém métodos para a transferência de dados propriamente dita (como leitura ou escrita de bytes). A navegação ocorre de forma absoluta a partir do início do arquivo ou de forma relativa a pontos de referência definidos.
Ciclo de vida
A classe ara::per::FileAccessor não pode ser instanciada diretamente ou copiada livremente. O construtor padrão está excluído ([SWS_PER_00589]), assim como o construtor de cópia ([SWS_PER_00592]) e o operador de atribuição por cópia ([SWS_PER_00593]). As semânticas de movimentação também estão explicitamente impedidas: tanto o construtor de movimentação ([SWS_PER_00590]) quanto o operador de atribuição por movimentação ([SWS_PER_00591]) estão excluídos. Disso decorre a interpretação de que as instâncias são criadas e gerenciadas exclusivamente no contexto de subclasses concretas.
Para uma liberação segura, o destrutor virtual ~FileAccessor() ([SWS_PER_00594]) possibilita uma destruição polimórfica por meio de ponteiros de classe base. Quanto à concorrência, todas as funções-membro são especificadas como não seguras para threads ([SWS_PER_00162], [SWS_PER_00424], [SWS_PER_00107], [SWS_PER_00163], [SWS_PER_00164]). Acessos concorrentes de diferentes threads à mesma instância devem, portanto, ser sincronizados pela aplicação.
Caminho de utilização
O uso típico de FileAccessor abrange a consulta do tamanho do arquivo, a determinação da posição momentânea, bem como deslocamentos direcionados de posição para a preparação de acessos de leitura ou de escrita:
Consulta de tamanho: por meio de GetSize(), o tamanho atual do arquivo em bytes é determinado ([SWS_PER_00424]).
Consulta de posição: com GetPosition(), a aplicação consulta o deslocamento atual de bytes a partir do início do arquivo, que também pode estar exatamente no final do arquivo ([SWS_PER_00162]).
Posicionamento absoluto:SetPosition() define o cursor para um deslocamento absoluto a partir do início do arquivo ([SWS_PER_00163]).
Deslocamento relativo:MovePosition() desloca o cursor a partir de Origin::kBeginning, Origin::kCurrent ou Origin::kEnd por um deslocamento com sinal ([SWS_PER_00164]).
Verificação de fim de arquivo: o método IsEof() indica se a posição atual atingiu o final do arquivo ([SWS_PER_00107]).
Todas as operações de FileAccessor são declaradas como seguras contra exceções (noexcept). Potenciais condições de erro em chamadas de navegação são retornadas por meio de ara::core::Result:
Se uma aplicação tentar direcionar para uma posição além do final do arquivo por meio de SetPosition(), a chamada falhará com o código de erro PerErrc::kInvalidPosition ([SWS_PER_00163]). O mesmo se aplica a MovePosition() caso a posição de destino calculada resulte em um valor negativo ou esteja após o final do arquivo ([SWS_PER_00164]). Para ambos os métodos, prescreve-se obrigatoriamente uma semântica estrita de rollback: se ocorrer um erro, a posição anteriormente válida do arquivo permanece inalterada ([SWS_PER_00163], [SWS_PER_00164]).
Os métodos de consulta GetSize() ([SWS_PER_00424]), GetPosition() ([SWS_PER_00162]) e IsEof() ([SWS_PER_00107]) retornam diretamente tipos de dados primitivos e não geram códigos de erro específicos.
Este texto foi redigido por uma IA com base na especificação AUTOSAR R25-11. Ele complementa a documentação normativa com uma visão geral da abstração de navegação.
Moves the current position in the file relative to the Origin. In case of an error, the current position is not changed.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 436bd0736ae4Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
usar
O método síncrono MovePosition da classe ara::per::FileAccessor desloca a posição atual do ficheiro relativamente a um ponto de referência definido [SWS_PER_00164]. A função está declarada como noexcept[SWS_PER_00164]. Como parâmetros, recebe o ponto de partida origin do tipo Origin bem como o deslocamento de bytes com sinal offset[SWS_PER_00164]. Em caso de execução bem-sucedida, o método devolve um ara::core::Result com a posição de byte absoluta resultante a partir do início do ficheiro [SWS_PER_00164].
Interação e valores de parâmetros
O ponto de referência origin é determinado pela enumeração Origin[SWS_PER_00146]:
Origin::kBeginning: deslocamento a partir do início do ficheiro; offset pode, neste caso, ser positivo [SWS_PER_00164], [SWS_PER_00146].
Origin::kCurrent: deslocamento a partir da posição atual do ficheiro; offset pode ser positivo ou negativo, sendo que um valor de zero não altera a posição [SWS_PER_00164], [SWS_PER_00146].
Origin::kEnd: deslocamento relativamente ao fim do ficheiro; offset pode ser negativo, enquanto um desvio de zero define a posição exatamente no fim do ficheiro [SWS_PER_00164], [SWS_PER_00146].
Tratamento de erros
Em caso de erro, a posição anterior do ficheiro não é alterada através de uma semântica de rollback [SWS_PER_00164]. Se o ponto de destino calculado resultar num valor inferior a zero ou se este se situar além do fim do ficheiro, é devolvido o código de erro PerErrc::kInvalidPosition[SWS_PER_00164]. Além disso, o resultado pode conter erros específicos do fabricante [SWS_PER_00164].
Simultaneidade e restrições
O método está especificado como exception safe[SWS_PER_00164]. Uma vez que a implementação está classificada como not thread-safe, acessos paralelos à mesma instância de FileAccessor têm de ser sincronizados do lado do chamador [SWS_PER_00164].
Este texto foi criado por um sistema de IA e com curadoria 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 em alemão