Clio
develop
The XRP Ledger API server.
Theme:
Default
Round
Robot
Toggle main menu visibility
Loading...
Searching...
No Matches
Concepts.hpp
1
#pragma once
2
3
#include "data/cassandra/Types.hpp"
4
5
#include <boost/asio/io_context.hpp>
6
#include <boost/asio/spawn.hpp>
7
#include <boost/json.hpp>
8
#include <boost/json/object.hpp>
9
10
#include <chrono>
11
#include <concepts>
12
#include <cstdint>
13
#include <optional>
14
#include <string>
15
#include <utility>
16
#include <vector>
17
18
namespace
data::cassandra
{
19
23
template
<
typename
T>
24
concept
SomeSettingsProvider
=
requires
(T a) {
25
{ a.getSettings() } -> std::same_as<Settings>;
26
{ a.getKeyspace() } -> std::same_as<std::string>;
27
{ a.getTablePrefix() } -> std::same_as<std::optional<std::string>>;
28
{ a.getReplicationFactor() } -> std::same_as<uint16_t>;
29
};
30
34
template
<
typename
T>
35
concept
SomeExecutionStrategy
=
requires
(
36
T a,
37
Settings settings,
38
Handle
handle,
39
Statement statement,
40
std::vector<Statement> statements,
41
PreparedStatement prepared,
42
boost::asio::yield_context token
43
) {
44
{ T(settings, handle) };
45
{ a.sync() } -> std::same_as<void>;
46
{ a.isTooBusy() } -> std::same_as<bool>;
47
{ a.writeSync(statement) } -> std::same_as<ResultOrError>;
48
{ a.writeSync(prepared) } -> std::same_as<ResultOrError>;
49
{ a.write(prepared) } -> std::same_as<void>;
50
{ a.write(std::move(statements)) } -> std::same_as<void>;
51
{ a.read(token, prepared) } -> std::same_as<ResultOrError>;
52
{ a.read(token, statement) } -> std::same_as<ResultOrError>;
53
{ a.read(token, statements) } -> std::same_as<ResultOrError>;
54
{ a.readEach(token, statements) } -> std::same_as<std::vector<Result>>;
55
{ a.stats() } -> std::same_as<boost::json::object>;
56
};
57
61
template
<
typename
T>
62
concept
SomeRetryPolicy
=
63
requires
(T a, boost::asio::io_context ioc,
CassandraError
err, uint32_t attempt) {
64
{ T(ioc) };
65
{ a.shouldRetry(err) } -> std::same_as<bool>;
66
{
67
a.retry([] {})
68
} -> std::same_as<void>;
69
};
70
71
}
// namespace data::cassandra
data::cassandra::CassandraError
A simple container for both error message and error code.
Definition
Error.hpp:15
data::cassandra::Handle
Represents a handle to the cassandra database cluster.
Definition
Handle.hpp:27
data::cassandra::SomeExecutionStrategy
The requirements of an execution strategy.
Definition
Concepts.hpp:35
data::cassandra::SomeRetryPolicy
The requirements of a retry policy.
Definition
Concepts.hpp:62
data::cassandra::SomeSettingsProvider
The requirements of a settings provider.
Definition
Concepts.hpp:24
data::cassandra
This namespace implements a wrapper for the Cassandra C++ driver.
Definition
CassandraBackendFamily.hpp:47
src
data
cassandra
Concepts.hpp
Generated by
1.17.0