|
Joedb 10.4.3
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 |
| void | full_pread (char *data, size_t size, int64_t offset) const |
| Fill the buffer, or throw if the end of the file is reached. | |
| 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, int64_t max_size=-1) 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 |
The returned value may be less than size, even if the end of the file is not reached. 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.