Joedb 9.6.2
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 override {return "file";}
23
24 const char *get_parameters_description() const override
25 {
26 return "<file>";
27 }
28
29 Connection *build(Arguments &arguments, Buffered_File *file) override
30 {
31 std::ostream null_stream(nullptr);
32
33 if (file_parser.parse(null_stream, arguments))
34 {
35 if (file_parser.get_file()->is_readonly())
36 {
37 readonly_journal.emplace(*file_parser.get_file());
38 connection.reset(new Pullonly_Journal_Connection(*readonly_journal));
39 }
40 else
41 {
42 writable_journal.emplace(*file_parser.get_file());
43 connection.reset(new Journal_Connection(*writable_journal));
44 }
45 }
46
47 return connection.get();
48 }
49 };
50}
51
52#endif
Class for conveniently parsing command-line arguments.
Definition Arguments.h:19
bool is_readonly() const noexcept
const char * get_parameters_description() const override
Connection * build(Arguments &arguments, Buffered_File *file) override
const char * get_name() const override
Create an instance of a Buffered_File by parsing command-line arguments.
Definition File_Parser.h:21
Buffered_File * parse(std::ostream &out, Arguments &arguments)
Buffered_File * get_file() const
Definition File_Parser.h:50
Definition Blob.h:7