|
| Server_File (const Connector &connector, std::ostream *log=nullptr) |
|
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.
|
|
| Robust_Connection (const Connector &connector, std::ostream *log) |
|
size_t | pread (char *data, size_t size, int64_t offset) const |
|
void | unlock () override |
| Unlock the connection.
|
|
virtual | ~Connection () |
|
| Buffered_File (Open_Mode mode) |
|
void | flush () |
|
void | flush_for_writing () |
|
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) const |
|
virtual bool | equal_to (Buffered_File &destination, int64_t from, int64_t until) const |
|
void | copy_to (Buffered_File &destination) const |
|
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 () |
|
std::string | safe_read_string (int64_t max_size) |
|
void | write_blob (Blob blob) |
|
Blob | read_blob () |
|
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) |
|
std::string | read_blob (Blob blob) const |
|
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 () |
| Write data and meta-data (such as file size) durably to permanent storage.
|
|
virtual void | datasync () |
| Write data durably to permanent storage.
|
|
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.
|
|
virtual | ~Abstract_File ()=default |
|
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.
#include <iostream>
{
{
});
std::cout << server_file.read_blob(blob) << '\n';
return 0;
}
Directly read file served from joedb_server.
Blob write_blob(const std::string &data) final
Definition at line 21 of file Server_File.h.