AbstractFile

Content

class File
class File_Manager

Fields

None
Again
Failed
ReadOnly
ReadWrite
Begin
Current
End

Detailed Description

class AbstractFile

The AbstractFile class to represent a file or any equivalent. It’s the main interface to read from or write to anything for the SC Store. The following pure virtual methods need to be implemented:

  • DoAcquire
  • DoRelease
  • DoSeek
  • DoTruncate
  • DoGetSize
  • DoRead
  • DoWrite
  • DoFlush SC Store will never directly create file objects, it will ask AbstractFilesystem to to it.

Public Types

enum class State

Indicates the status of the file.

Values:

enumerator None

Not initialized yet.

enumerator Again

Cannot access to the resource because it’s already used.

enumerator Failed

Cannot access to the resource.

enumerator ReadOnly

Resource accessible only for read.

enumerator ReadWrite

Resource fully accessible.

enum class Position

Position for seek operations

Values:

enumerator Begin
enumerator Current
enumerator End

Public Functions

virtual ~AbstractFile()
AbstractFile()

Empty Initialization. Usualy do nothing with the resource.

AbstractFile(path const &path)

Initialization with a given path. The _path property is updated by the default implemenation.

void SetPath(path const &path)
inline path const &GetPath() const
inline State GetState() const
inline bool IsOpen() const
void Release()

The following functions will handle some internal stuff then, the custom version Do*() will be called.

State AcquireReadOnly(bool create_if_missing)
State AcquireReadWrite(bool create_if_missing, bool truncate)
int64_t Seek(int64_t offset, Position position = Position::Begin)

returns offset from begin

bool Truncate()

at current offset return true if it worked

int64_t Size() const
size_t Read(void *data, size_t n_bytes)
size_t Write(void const *data, size_t n_bytes)
bool Flush()

Friends

friend class TC::IO::File
friend class TC::IO::File_Manager