Joedb 9.5.0
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
File_Connection_Builder.h
Go to the documentation of this file.
1#ifndef joedb_File_Connection_Builder_declared
2#define joedb_File_Connection_Builder_declared
3
7
8#include <iostream>
9
10namespace joedb
11{
12 /// @ingroup ui
14 {
15 private:
16 File_Parser file_parser;
17 std::optional<Readonly_Journal> readonly_journal;
18 std::optional<Writable_Journal> writable_journal;
19 std::unique_ptr<Connection> connection;
20
21 public:
22 const char *get_name() const final {return "file";}
23 int get_min_parameters() const final {return 1;}
24 int get_max_parameters() const final {return 100;}
25
26 const char *get_parameters_description() const final
27 {
28 return "<file>";
29 }
30
32 (
33 const int argc,
34 const char * const * const argv,
35 Buffered_File *file
36 ) final
37 {
38 int arg_index = 0;
39 std::ostream null_stream(nullptr);
40 file_parser.parse(null_stream, argc, argv, arg_index);
41
42 if (file_parser.get_file()->is_readonly())
43 {
44 readonly_journal.emplace(*file_parser.get_file());
45 connection.reset(new Pullonly_Journal_Connection(*readonly_journal));
46 }
47 else
48 {
49 writable_journal.emplace(*file_parser.get_file());
50 connection.reset(new Journal_Connection(*writable_journal));
51 }
52
53 return *connection;
54 }
55 };
56}
57
58#endif
bool is_readonly() const noexcept
const char * get_name() const final
const char * get_parameters_description() const final
Connection & build(const int argc, const char *const *const argv, Buffered_File *file) final
Create an instance of a Buffered_File by parsing command-line arguments.
Definition File_Parser.h:20
Buffered_File * get_file() const
Definition File_Parser.h:56
Buffered_File * parse(std::ostream &out, int argc, const char *const *argv, int &arg_index)
Definition Blob.h:7