Joedb 10.3.0
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
joedb::Posix_FD Class Reference

#include <joedb/journal/Posix_File.h>

Inheritance diagram for joedb::Posix_FD:
Inheritance graph
[legend]
Collaboration diagram for joedb::Posix_FD:
Collaboration graph
[legend]

Public Member Functions

 Posix_FD (int fd, Open_Mode mode)
 
 Posix_FD (const char *file_name, Open_Mode mode)
 
 Posix_FD (const Posix_FD &)=delete
 
Posix_FDoperator= (const Posix_FD &)=delete
 
int64_t get_size () const override
 Get the size of the file, or -1 if it is unknown.
 
size_t pread (char *buffer, size_t size, int64_t offset) const override
 Read a range of bytes.
 
void pwrite (const char *buffer, size_t size, int64_t offset) override
 Write a range of bytes. Extend file size if necessary.
 
void sync () override
 Write data durably (including file-size change)
 
void shared_lock (int64_t start, int64_t size) override
 Lock a range of bytes for reading (prevents writes, not reads)
 
void exclusive_lock (int64_t start, int64_t size) override
 Lock a range of bytes for writing (prevents both writes and reads)
 
void unlock (int64_t start, int64_t size) noexcept override
 Remove a lock. The range should match the range of a corresponding lock.
 
 ~Posix_FD () override
 
- Public Member Functions inherited from joedb::Abstract_File
 Abstract_File (Open_Mode mode)
 
bool is_shared () const noexcept
 
bool is_readonly () const noexcept
 
Open_Mode get_mode () const noexcept
 
virtual void datasync ()
 Write data durably (no file-size change)
 
void exclusive_lock_tail ()
 
void unlock_tail () noexcept
 
void exclusive_lock_head ()
 
void shared_lock_head ()
 
void unlock_head () noexcept
 
std::string read_blob (Blob blob) const
 
virtual void copy_to (Abstract_File &destination, int64_t start, int64_t size) const
 
virtual bool equal_to (const Abstract_File &destination, int64_t from, int64_t until) const
 
void copy_to (Abstract_File &destination) const
 
virtual ~Abstract_File ()=default
 

Static Public Member Functions

static void throw_last_error (const char *action, const char *file_name)
 
- Static Public Member Functions inherited from joedb::Abstract_File
static void reading_past_end_of_file ()
 

Protected Member Functions

bool try_exclusive_lock (int64_t start, int64_t size)
 
- Protected Member Functions inherited from joedb::Abstract_File
void make_readonly ()
 
void make_writable ()
 

Additional Inherited Members

- Static Protected Attributes inherited from joedb::Abstract_File
static constexpr int64_t last_position = (1ULL << 63) - 1
 

Detailed Description

Definition at line 17 of file Posix_File.h.

Constructor & Destructor Documentation

◆ Posix_FD() [1/3]

joedb::Posix_FD::Posix_FD ( int  fd,
Open_Mode  mode 
)
inline

Definition at line 30 of file Posix_File.h.

◆ Posix_FD() [2/3]

joedb::Posix_FD::Posix_FD ( const char *  file_name,
Open_Mode  mode 
)

Definition at line 152 of file Posix_File.cpp.

◆ Posix_FD() [3/3]

joedb::Posix_FD::Posix_FD ( const Posix_FD )
delete

◆ ~Posix_FD()

joedb::Posix_FD::~Posix_FD ( )
override

Definition at line 205 of file Posix_File.cpp.

Member Function Documentation

◆ exclusive_lock()

void joedb::Posix_FD::exclusive_lock ( int64_t  start,
int64_t  size 
)
overridevirtual

Reimplemented from joedb::Abstract_File.

Definition at line 76 of file Posix_File.cpp.

◆ get_size()

int64_t joedb::Posix_FD::get_size ( ) const
overridevirtual

Reimplemented from joedb::Abstract_File.

Definition at line 193 of file Posix_File.cpp.

◆ operator=()

Posix_FD & joedb::Posix_FD::operator= ( const Posix_FD )
delete

◆ pread()

size_t joedb::Posix_FD::pread ( char *  data,
size_t  size,
int64_t  offset 
) const
overridevirtual

For very large reads, the returned value may be less than size, even if the end of the file is not reached. It is assumed that small reads (such as the 41 bytes of the joedb header) will not be truncated. 0 is returned if the end of the file is reached.

Reimplemented from joedb::Abstract_File.

Definition at line 91 of file Posix_File.cpp.

◆ pwrite()

void joedb::Posix_FD::pwrite ( const char *  data,
size_t  size,
int64_t  offset 
)
overridevirtual

Reimplemented from joedb::Abstract_File.

Definition at line 103 of file Posix_File.cpp.

◆ shared_lock()

void joedb::Posix_FD::shared_lock ( int64_t  start,
int64_t  size 
)
overridevirtual

Reimplemented from joedb::Abstract_File.

Definition at line 68 of file Posix_File.cpp.

◆ sync()

void joedb::Posix_FD::sync ( )
overridevirtual

Reimplemented from joedb::Abstract_File.

Definition at line 126 of file Posix_File.cpp.

◆ throw_last_error()

void joedb::Posix_FD::throw_last_error ( const char *  action,
const char *  file_name 
)
static

Definition at line 32 of file Posix_File.cpp.

◆ try_exclusive_lock()

bool joedb::Posix_FD::try_exclusive_lock ( int64_t  start,
int64_t  size 
)
protected

Definition at line 61 of file Posix_File.cpp.

◆ unlock()

void joedb::Posix_FD::unlock ( int64_t  start,
int64_t  size 
)
overridevirtualnoexcept

Reimplemented from joedb::Abstract_File.

Definition at line 84 of file Posix_File.cpp.


The documentation for this class was generated from the following files: