Joedb 9.1.4
The Journal-Only Embedded Database
|
Directly read file served from joedb_server. More...
#include <joedb/concurrency/Server_File.h>
Public Member Functions | |
Server_File (Channel &channel) | |
int64_t | handshake (Readonly_Journal &client_journal, bool content_check) override |
Called during Client construction. | |
int64_t | pull (Writable_Journal &client_journal, std::chrono::milliseconds wait) override |
Pull new data from the connection. | |
int64_t | lock_pull (Writable_Journal &client_journal, std::chrono::milliseconds wait) override |
Fused lock_pull, executed at the start of a write transaction. | |
int64_t | push_until (Readonly_Journal &client_journal, int64_t server_position, int64_t until_position, bool unlock_after) override |
Push new data to the connection. | |
size_t | pread (char *data, size_t size, int64_t offset) const override |
void | pwrite (const char *data, size_t size, int64_t offset) override |
int64_t | get_size () const override |
std::string | read_blob_data (Blob blob) const override |
![]() | |
Server_Connection (Channel &channel) | |
int64_t | get_checkpoint (Readonly_Journal &client_journal, std::chrono::milliseconds wait) override |
Get new connection checkpoint without pulling. | |
void | unlock () override |
Can be used to cancel a transaction without pushing. | |
![]() | |
Server_Client (Channel &channel) | |
void | set_log (std::ostream *stream) |
void | set_keep_alive_interval (std::chrono::seconds duration) |
int64_t | get_session_id () const |
Thread_Safe_Channel & | get_channel () |
void | ping () |
~Server_Client () | |
![]() | |
int64_t | push (Readonly_Journal &client_journal, int64_t from_checkpoint, bool unlock_after) |
Shortcut to call push_until until the client checkpoint. | |
virtual | ~Connection () |
![]() | |
Buffered_File (Open_Mode mode) | |
void | flush () |
void | flush_and_sync () |
void | exclusive_lock_tail () |
void | unlock_tail () noexcept |
bool | tail_is_locked () const noexcept |
void | shared_lock_head () |
void | exclusive_lock_head () |
void | unlock_head () noexcept |
bool | is_shared () const noexcept |
bool | is_readonly () const noexcept |
void | set_position (int64_t position) |
int64_t | get_position () const noexcept |
virtual void | copy_to (Buffered_File &destination, int64_t start, int64_t size) |
void | copy_to (Buffered_File &destination) |
template<typename T > | |
void | write (T x) |
template<typename T > | |
T | read () |
template<typename T > | |
void | compact_write (T x) |
template<typename T > | |
T | compact_read () |
template<typename T > | |
T | read_strong_type () |
void | write_reference (Record_Id id) |
Record_Id | read_reference () |
void | write_string (const std::string &s) |
std::string | read_string () |
void | write_blob (Blob blob) |
Blob | read_blob () |
std::string | safe_read_string (int64_t max_size) |
void | write_data (const char *data, size_t n) |
size_t | read_data (char *data, const size_t n) |
void | ignore (const int64_t n) |
![]() | |
void | sequential_seek (int64_t new_position) |
size_t | sequential_read (char *data, size_t size) |
void | sequential_write (const char *data, size_t size) |
int64_t | get_position () const |
![]() | |
virtual void | sync () |
virtual void | shared_lock (int64_t start, int64_t size) |
virtual void | exclusive_lock (int64_t start, int64_t size) |
virtual void | unlock (int64_t start, int64_t size) noexcept |
virtual | ~Abstract_File ()=default |
Additional Inherited Members | |
![]() | |
static constexpr int64_t | last_position = (1ULL << 63) - 1 |
![]() | |
int64_t | pull (Writable_Journal *client_journal, std::chrono::milliseconds wait, char pull_type) |
bool | check_matching_content (Readonly_Journal &client_journal, int64_t server_checkpoint) |
![]() | |
void | download (Async_Writer &writer, Channel_Lock &lock, int64_t size) const |
![]() | |
void | destructor_flush () noexcept |
void | make_readonly () |
void | make_writable () |
![]() | |
static void | content_mismatch () |
![]() | |
Thread_Safe_Channel | channel |
std::ostream * | log |
bool | connected |
Buffer< 13 > | buffer |
int64_t | session_id |
bool | pullonly_server |
int64_t | server_checkpoint |
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.
A demo can be found in write_server_blob.cpp:
Definition at line 22 of file Server_File.h.
joedb::Server_File::Server_File | ( | Channel & | channel | ) |
Definition at line 45 of file Server_File.cpp.
|
inlineoverridevirtual |
Reimplemented from joedb::Abstract_File.
Definition at line 77 of file Server_File.h.
|
overridevirtual |
client_journal | may be used to check matching content |
content_check | indicates whether matching content is tested |
server_checkpoint |
Reimplemented from joedb::Server_Connection.
Definition at line 76 of file Server_File.cpp.
|
overridevirtual |
server_checkpoint |
Reimplemented from joedb::Server_Connection.
Definition at line 100 of file Server_File.cpp.
Reimplemented from joedb::Abstract_File.
Definition at line 140 of file Server_File.cpp.
|
overridevirtual |
client_journal | journal to pull into |
wait | duration during which the connection may wait for new data if the pull would otherwise be empty |
server_checkpoint |
Reimplemented from joedb::Server_Connection.
Definition at line 89 of file Server_File.cpp.
|
overridevirtual |
server_checkpoint |
Reimplemented from joedb::Server_Connection.
Definition at line 111 of file Server_File.cpp.
Reimplemented from joedb::Abstract_File.
Definition at line 153 of file Server_File.cpp.
|
overridevirtual |
Reimplemented from joedb::Buffered_File.
Definition at line 170 of file Server_File.cpp.