|
Joedb 10.3.0
The Journal-Only Embedded Database
|
Directly read file served from joedb_server. More...
#include <joedb/concurrency/Server_File.h>


Public Member Functions | |
| Server_File (const Connector &connector, Logger &logger=Logger::dummy_logger) | |
| int64_t | handshake (const Readonly_Journal &client_journal, Content_Check content_check) override |
| Called during Client construction. | |
| int64_t | pull (Lock_Action lock_action, Data_Transfer data_transfer, Writable_Journal &client_journal, std::chrono::milliseconds wait) override |
| Pull from the connection. | |
| int64_t | push (const Readonly_Journal &client_journal, int64_t server_position, int64_t until_position, Unlock_Action unlock_action) override |
| Push new data to the connection. | |
| size_t | pread (char *data, size_t size, int64_t offset) const override |
| Read a range of bytes. | |
| void | pwrite (const char *data, size_t size, int64_t offset) override |
| Write a range of bytes. Extend file size if necessary. | |
| int64_t | get_size () const override |
| Get the size of the file, or -1 if it is unknown. | |
Public Member Functions inherited from joedb::Robust_Connection | |
| Robust_Connection (const Connector &connector, Logger &logger) | |
| size_t | pread (char *data, size_t size, int64_t offset) const |
| void | unlock () override |
| Unlock the connection. | |
| bool | is_pullonly () const override |
Public Member Functions inherited from joedb::Connection | |
| virtual | ~Connection () |
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 | sync () |
| Write data durably (including file-size change) | |
| virtual void | datasync () |
| Write data durably (no file-size change) | |
| virtual void | shared_lock (int64_t start, int64_t size) |
| Lock a range of bytes for reading (prevents writes, not reads) | |
| virtual void | exclusive_lock (int64_t start, int64_t size) |
| Lock a range of bytes for writing (prevents both writes and reads) | |
| virtual void | unlock (int64_t start, int64_t size) noexcept |
| Remove a lock. The range should match the range of a corresponding lock. | |
| 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 |
Additional Inherited Members | |
Static Public Member Functions inherited from joedb::Abstract_File | |
| static void | reading_past_end_of_file () |
Static Public Attributes inherited from joedb::Connection | |
| static Connection | dummy |
| Since this class has no internal state, this global variable can be used instead of creating an instance. | |
Protected Member Functions inherited from joedb::Robust_Connection | |
| void | reconnect (const std::exception *e) const |
| template<typename F > | |
| auto | try_until_success (const F &f) const |
Protected Member Functions inherited from joedb::Connection | |
| Connection ()=default | |
Protected Member Functions inherited from joedb::Abstract_File | |
| void | make_readonly () |
| void | make_writable () |
Static Protected Member Functions inherited from joedb::Connection | |
| static void | content_mismatch () |
| Called by handshake when the file and the connection do not match. | |
Protected Attributes inherited from joedb::Robust_Connection | |
| std::unique_ptr< Server_Connection > | connection |
Static Protected Attributes inherited from joedb::Abstract_File | |
| static constexpr int64_t | last_position = (1ULL << 63) - 1 |
This class allows reading a remote file via the joedb network protocol. It is convenient for reading blobs from a large remote database without having to download a local replica. This file can also be written to: the head and tail of the file are stored in RAM locally, and can be pushed to the remote server if used in a client.
Definition at line 21 of file Server_File.h.
| joedb::Server_File::Server_File | ( | const Connector & | connector, |
| Logger & | logger = Logger::dummy_logger |
||
| ) |
Definition at line 21 of file Server_File.cpp.
|
inlineoverridevirtual |
Reimplemented from joedb::Abstract_File.
Definition at line 69 of file Server_File.h.
|
overridevirtual |
| client_journal | may be used to check matching content |
| content_check | indicates how matching content is tested |
Reimplemented from joedb::Robust_Connection.
Definition at line 62 of file Server_File.cpp.
|
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 104 of file Server_File.cpp.
|
overridevirtual |
| lock_action | whether the connection should be locked before pulling |
| data_transfer | whether data should be transferred |
| client_journal | journal to pull into |
| wait | duration during which the connection may wait for new data if the pull would otherwise be empty |
Reimplemented from joedb::Robust_Connection.
Definition at line 34 of file Server_File.cpp.
|
overridevirtual |
Reimplemented from joedb::Robust_Connection.
Definition at line 75 of file Server_File.cpp.
|
overridevirtual |
Reimplemented from joedb::Abstract_File.
Definition at line 117 of file Server_File.cpp.