xrpld
Loading...
Searching...
No Matches
SociDB.h
1#pragma once
2
11
12#include <soci/blob.h>
13#include <soci/session.h>
14
15#include <memory>
16#ifdef __clang__
17#pragma clang diagnostic push
18#pragma clang diagnostic ignored "-Wdeprecated"
19#endif
20
21#include <xrpl/core/JobQueue.h>
22#include <xrpl/core/ServiceRegistry.h>
23
24#define SOCI_USE_BOOST
25
26#include <cstdint>
27#include <string>
28#include <vector>
29
30namespace sqlite_api {
31struct sqlite3;
32} // namespace sqlite_api
33
34namespace xrpl {
35
36class BasicConfig;
37
44{
46 explicit DBConfig(std::string dbPath);
47
48public:
49 DBConfig(BasicConfig const& config, std::string const& dbName);
50 [[nodiscard]] std::string
51 connectionString() const;
52 void
53 open(soci::session& s) const;
54};
55
68void
69open(soci::session& s, BasicConfig const& config, std::string const& dbName);
70
80void
81open(soci::session& s, std::string const& beName, std::string const& connectionString);
82
84getKBUsedAll(soci::session& s);
86getKBUsedDB(soci::session& s);
87
88void
89convert(soci::blob& from, std::vector<std::uint8_t>& to);
90void
91convert(soci::blob& from, std::string& to);
92void
93convert(std::vector<std::uint8_t> const& from, soci::blob& to);
94void
95convert(std::string const& from, soci::blob& to);
96
97class Checkpointer : public std::enable_shared_from_this<Checkpointer>
98{
99public:
100 virtual std::uintptr_t
101 id() const = 0;
102 virtual ~Checkpointer() = default;
103
104 virtual void
105 schedule() = 0;
106
107 virtual void
109};
110
120
121} // namespace xrpl
122
123#ifdef __clang__
124#pragma clang diagnostic pop
125#endif
Holds unparsed configuration information.
virtual void checkpoint()=0
virtual std::uintptr_t id() const =0
virtual void schedule()=0
virtual ~Checkpointer()=default
void open(soci::session &s) const
Definition SociDB.cpp:84
std::string connectionString() const
Definition SociDB.cpp:78
DBConfig(std::string dbPath)
Definition SociDB.cpp:68
std::string connectionString_
Definition SociDB.h:45
A pool of threads to perform work.
Definition JobQueue.h:60
Service registry for dependency injection.
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
std::uint32_t getKBUsedDB(soci::session &s)
Definition SociDB.cpp:131
std::uint32_t getKBUsedAll(soci::session &s)
Definition SociDB.cpp:123
void open(soci::session &s, BasicConfig const &config, std::string const &dbName)
Open a soci session.
Definition SociDB.cpp:90
std::shared_ptr< Checkpointer > makeCheckpointer(std::uintptr_t id, std::weak_ptr< soci::session >, JobQueue &, ServiceRegistry &)
Returns a new checkpointer which makes checkpoints of a soci database every checkpointPageCount pages...
Definition SociDB.cpp:332
void convert(soci::blob &from, std::vector< std::uint8_t > &to)
Definition SociDB.cpp:145