Joedb 9.1.4
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
Server_File.h
Go to the documentation of this file.
1#ifndef joedb_Server_File_declared
2#define joedb_Server_File_declared
3
7
8namespace joedb
9{
10 /// Directly read file served from joedb_server
11 ///
12 /// This class allows reading a remote file via the joedb network protocol.
13 /// It is convenient for reading blobs from a large remote database without
14 /// having to download a local replica. This file can also be written to:
15 /// the head and tail of the file are stored in RAM locally, and can be
16 /// pushed to the remote server if used in a client.
17 ///
18 /// A demo can be found in write_server_blob.cpp:
19 /// @include write_server_blob.cpp
20 ///
21 /// @ingroup concurrency
23 {
24 private:
25 int64_t tail_offset;
26
27 Memory_File head;
28 Memory_File tail;
29
30 size_t remote_pread(char *data, size_t size, int64_t offset) const;
31 static void write_to_body_error();
32 void write_checkpoint();
33
34 int64_t pull
35 (
36 std::chrono::milliseconds wait,
37 char pull_type
38 );
39
40 public:
42
43 //
44 // Server_Connection overrides
45 //
47 (
49 bool content_check
50 ) override;
51
52 int64_t pull
53 (
55 std::chrono::milliseconds wait
56 ) override;
57
59 (
61 std::chrono::milliseconds wait
62 ) override;
63
65 (
69 bool unlock_after
70 ) override;
71
72 //
73 // Abstract_File overrides
74 //
75 size_t pread(char *data, size_t size, int64_t offset) const override;
76 void pwrite(const char *data, size_t size, int64_t offset) override;
77 int64_t get_size() const override {return tail_offset + tail.get_size();}
78
79 //
80 // Buffered_File override
81 //
82 std::string read_blob_data(Blob blob) const override;
83 };
84}
85
86#endif
int64_t get_size() const override
Definition Memory_File.h:24
Thread_Safe_Channel channel
Directly read file served from joedb_server.
Definition Server_File.h:23
int64_t handshake(Readonly_Journal &client_journal, bool content_check) override
Called during Client construction.
int64_t get_size() const override
Definition Server_File.h:77
int64_t lock_pull(Writable_Journal &client_journal, std::chrono::milliseconds wait) override
Fused lock_pull, executed at the start of a write transaction.
std::string read_blob_data(Blob blob) const override
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 push_until(Readonly_Journal &client_journal, int64_t server_position, int64_t until_position, bool unlock_after) override
Push new data to the connection.
Definition Blob.h:7