Joedb 10.0.1
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
Multiplexer.h
Go to the documentation of this file.
1#ifndef joedb_Multiplexer_declared
2#define joedb_Multiplexer_declared
3
4#include <vector>
5#include <initializer_list>
6#include <functional>
7
8#include "joedb/Writable.h"
9
10namespace joedb
11{
12 /// @ingroup joedb
13 class Multiplexer: public virtual Writable
14 {
15 private:
16 const std::vector<std::reference_wrapper<Writable>> writables;
17 size_t start_index;
18
19 public:
21 (
22 std::initializer_list<std::reference_wrapper<Writable>> initializer_list
23 );
24
25 void set_start_index(size_t index) {start_index = index;}
26
27 void create_table(const std::string &name) override;
28 void drop_table(Table_Id table_id) override;
29 void rename_table(Table_Id table_id, const std::string &name) override;
30 void add_field
31 (
32 Table_Id table_id,
33 const std::string &name,
34 Type type
35 ) override;
36 void drop_field(Table_Id table_id, Field_Id field_id) override;
37 void rename_field
38 (
39 Table_Id table_id,
40 Field_Id field_id,
41 const std::string &name
42 ) override;
43 void custom(const std::string &name) override;
44 void comment(const std::string &comment) override;
45 void timestamp(int64_t timestamp) override;
46 void valid_data() override;
47 void flush() override;
48
49 int64_t get_position() const override;
50 void start_writing(int64_t position) override;
51 void end_writing(int64_t position) override;
52 void soft_checkpoint() override;
53 void hard_checkpoint() override;
54
55 void insert_into(Table_Id table_id, Record_Id record_id) override;
56 void delete_from(Table_Id table_id, Record_Id record_id) override;
57
58 void insert_vector
59 (
60 Table_Id table_id,
61 Record_Id record_id,
62 size_t size
63 ) override;
64
65 void delete_vector
66 (
67 Table_Id table_id,
68 Record_Id record_id,
69 size_t size
70 ) override;
71
72 #define TYPE_MACRO(type, return_type, type_id, R, W)\
73 void update_##type_id\
74 (\
75 Table_Id table_id,\
76 Record_Id record_id,\
77 Field_Id field_id,\
78 return_type value\
79 ) override;\
80 void update_vector_##type_id\
81 (\
82 Table_Id table_id,\
83 Record_Id record_id,\
84 Field_Id field_id,\
85 size_t size,\
86 const type *value\
87 ) override;\
88 type *get_own_##type_id##_storage\
89 (\
90 Table_Id table_id,\
91 Record_Id record_id,\
92 Field_Id field_id,\
93 size_t &capacity\
94 ) override;
95 #include "joedb/TYPE_MACRO.h"
96
97 void on_blob(Blob blob) override;
98 bool wants_blob_data() const override;
99 Blob write_blob(const std::string &data) override;
100
101 ~Multiplexer() override;
102 };
103}
104
105#endif
void soft_checkpoint() override
void insert_into(Table_Id table_id, Record_Id record_id) override
void comment(const std::string &comment) override
bool wants_blob_data() const override
~Multiplexer() override
Blob write_blob(const std::string &data) override
void set_start_index(size_t index)
Definition Multiplexer.h:25
void custom(const std::string &name) override
void create_table(const std::string &name) override
int64_t get_position() const override
void rename_field(Table_Id table_id, Field_Id field_id, const std::string &name) override
void drop_field(Table_Id table_id, Field_Id field_id) override
void valid_data() override
void timestamp(int64_t timestamp) override
void end_writing(int64_t position) override
void add_field(Table_Id table_id, const std::string &name, Type type) override
void delete_from(Table_Id table_id, Record_Id record_id) override
void on_blob(Blob blob) override
void rename_table(Table_Id table_id, const std::string &name) override
void flush() override
void insert_vector(Table_Id table_id, Record_Id record_id, size_t size) override
void hard_checkpoint() override
void delete_vector(Table_Id table_id, Record_Id record_id, size_t size) override
void start_writing(int64_t position) override
void drop_table(Table_Id table_id) override
Superclass with all joedb journal event listeners as virtual functions.
Definition Writable.h:17
Definition Blob.h:7