![]() |
F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
|
posix implementation of Os::File More...
#include <Os/Posix/File.hpp>
Public Member Functions | |
PosixFile ()=default | |
constructor More... | |
PosixFile (const PosixFile &other) | |
copy constructor More... | |
PosixFile & | operator= (const PosixFile &other) |
assignment operator that copies the internal representation More... | |
~PosixFile () override=default | |
destructor More... | |
Os::FileInterface::Status | open (const char *path, Mode mode, OverwriteType overwrite) override |
open file with supplied path and mode More... | |
void | close () override |
close the file, if not opened then do nothing More... | |
Status | size (FwSizeType &size_result) override |
get size of currently open file More... | |
Status | position (FwSizeType &position_result) override |
get file pointer position of the currently open file More... | |
Status | preallocate (FwSizeType offset, FwSizeType length) override |
pre-allocate file storage More... | |
Status | seek (FwSignedSizeType offset, SeekType seekType) override |
seek the file pointer to the given offset More... | |
Status | flush () override |
flush file contents to storage More... | |
Status | read (U8 *buffer, FwSizeType &size, WaitType wait) override |
read data from this file into supplied buffer bounded by size More... | |
Status | write (const U8 *buffer, FwSizeType &size, WaitType wait) override |
read data from this file into supplied buffer bounded by size More... | |
FileHandle * | getHandle () override |
returns the raw file handle More... | |
![]() | |
virtual | ~FileInterface ()=default |
Additional Inherited Members | |
![]() | |
enum | Mode { OPEN_NO_MODE, OPEN_READ, OPEN_CREATE, OPEN_WRITE, OPEN_SYNC_WRITE, OPEN_APPEND, MAX_OPEN_MODE } |
enum | Status { OP_OK, DOESNT_EXIST, NO_SPACE, NO_PERMISSION, BAD_SIZE, NOT_OPENED, FILE_EXISTS, NOT_SUPPORTED, INVALID_MODE, INVALID_ARGUMENT, NO_MORE_RESOURCES, OTHER_ERROR, MAX_STATUS } |
enum | OverwriteType { NO_OVERWRITE, OVERWRITE, MAX_OVERWRITE_TYPE } |
enum | SeekType { RELATIVE, ABSOLUTE, MAX_SEEK_TYPE } |
enum | WaitType { NO_WAIT, WAIT, MAX_WAIT_TYPE } |
![]() | |
static FileInterface * | getDelegate (FileHandleStorage &aligned_placement_new_memory, const FileInterface *to_copy=nullptr) |
provide a pointer to a file delegate object More... | |
posix implementation of Os::File
Posix implementation of FileInterface
for use as a delegate class handling posix file operations. Posix files use standard open
, read
, and write
posix calls. The handle is represented as a PosixFileHandle
which wraps a single int
type file descriptor used in those API calls.
|
default |
constructor
Os::Posix::File::PosixFile::PosixFile | ( | const PosixFile & | other | ) |
|
overridedefault |
destructor
|
overridevirtual |
close the file, if not opened then do nothing
Closes the file, if open. Otherwise this function does nothing. Delegates to the chosen implementation's closeInternal
function. mode
is set to OPEN_NO_MODE
.
Implements Os::FileInterface.
|
overridevirtual |
flush file contents to storage
Flushes the file contents to storage (i.e. out of the OS cache to disk). Does nothing in implementations that do not support flushing.
Implements Os::FileInterface.
|
overridevirtual |
returns the raw file handle
Gets the raw file handle from the implementation. Note: users must include the implementation specific header to make any real use of this handle. Otherwise it//!must* be passed as an opaque type.
Implements Os::FileInterface.
|
overridevirtual |
open file with supplied path and mode
Open the file passed in with the given mode. If overwrite is set to OVERWRITE, then opening files in OPEN_CREATE mode will clobber existing files. Set overwrite to NO_OVERWRITE to preserve existing files. The status of the open request is returned from the function call. Delegates to the chosen implementation's open
function.
It is invalid to send nullptr
as the path. It is invalid to supply mode
as a non-enumerated value. It is invalid to supply overwrite
as a non-enumerated value.
path | c-string of path to open |
mode | file operation mode |
overwrite | overwrite existing file on create |
Implements Os::FileInterface.
|
overridevirtual |
get file pointer position of the currently open file
Get the current position of the read/write pointer of the open file.
position | output parameter for size. |
Implements Os::FileInterface.
|
overridevirtual |
pre-allocate file storage
Pre-allocates file storage with at least length
storage starting at offset
. No-op on implementations that cannot pre-allocate.
It is invalid to pass a negative offset
. It is invalid to pass a negative length
.
offset | offset into file |
length | length after offset to preallocate |
Implements Os::FileInterface.
|
overridevirtual |
read data from this file into supplied buffer bounded by size
Read data from this file up to the size
and store it in buffer
. When wait
is set to WAIT
, this will block until the requested size has been read successfully read or the end of the file has been reached. When wait
is set to NO_WAIT
it will return whatever data is currently available.
size
will be updated to the count of bytes actually read. Status will reflect the success/failure of the read operation.
It is invalid to pass nullptr
to this function call. It is invalid to pass a negative size
. It is invalid to supply wait as a non-enumerated value.
buffer | memory location to store data read from file |
size | size of data to read |
wait | WAIT to wait for data, NO_WAIT to return what is currently available |
Implements Os::FileInterface.
|
overridevirtual |
seek the file pointer to the given offset
Seek the file pointer to the given offset
. If seekType
is set to ABSOLUTE
then the offset is calculated from the start of the file, and if it is set to RELATIVE
it is calculated from the current position.
offset | offset to seek to |
seekType | ABSOLUTE for seeking from beginning of file, RELATIVE to use current position. |
Implements Os::FileInterface.
|
overridevirtual |
get size of currently open file
Get the size of the currently open file and fill the size parameter. Return status of the operation.
size | output parameter for size. |
Implements Os::FileInterface.
|
overridevirtual |
read data from this file into supplied buffer bounded by size
Write data to this file up to the size
from the buffer
. When wait
is set to WAIT
, this will block until the requested size has been written successfully to disk. When wait
is set to NO_WAIT
it will return once the data is sent to the OS.
size
will be updated to the count of bytes actually written. Status will reflect the success/failure of the read operation.
It is invalid to pass nullptr
to this function call. It is invalid to pass a negative size
. It is invalid to supply wait as a non-enumerated value.
buffer | memory location to store data read from file |
size | size of data to read |
wait | WAIT to wait for data to write to disk, NO_WAIT to return what is currently available |
Implements Os::FileInterface.