22#include "data/cassandra/impl/ManagedObject.hpp"
23#include "util/Assert.hpp"
24#include "util/log/Logger.hpp"
37namespace data::cassandra::impl {
39enum class Provider { Cassandra, Keyspace };
42providerFromString(std::string
const& provider)
45 provider ==
"cassandra" || provider ==
"aws_keyspace",
46 "Provider type must be one of 'cassandra' or 'aws_keyspace'"
48 return provider ==
"cassandra" ? Provider::Cassandra : Provider::Keyspace;
57 static constexpr std::size_t kDEFAULT_CONNECTION_TIMEOUT = 10000;
58 static constexpr uint32_t kDEFAULT_MAX_WRITE_REQUESTS_OUTSTANDING = 10'000;
59 static constexpr uint32_t kDEFAULT_MAX_READ_REQUESTS_OUTSTANDING = 100'000;
60 static constexpr std::size_t kDEFAULT_BATCH_SIZE = 20;
61 static constexpr Provider kDEFAULT_PROVIDER = Provider::Cassandra;
67 std::string contactPoints =
"127.0.0.1";
68 std::optional<uint16_t> port;
82 std::chrono::milliseconds
connectionTimeout = std::chrono::milliseconds{kDEFAULT_CONNECTION_TIMEOUT};
91 uint32_t
threads = std::thread::hardware_concurrency();
115 std::optional<std::string>
username = std::nullopt;
118 std::optional<std::string>
password = std::nullopt;
141class Cluster :
public ManagedObject<CassCluster> {
149 setupConnection(
Settings const& settings);
158 setupCertificate(
Settings const& settings);
161 setupCredentials(
Settings const& settings);
A simple thread-safe logger for the channel specified in the constructor.
Definition Logger.hpp:95
Represents the configuration of a secure connection bundle.
Definition Cluster.hpp:74
Bundles all cassandra settings in one place.
Definition Cluster.hpp:56
std::chrono::milliseconds requestTimeout
Request timeout specified in milliseconds.
Definition Cluster.hpp:85
std::chrono::milliseconds connectionTimeout
Connect timeout specified in milliseconds.
Definition Cluster.hpp:82
Provider provider
Provider to know if we are using scylladb or keyspace.
Definition Cluster.hpp:106
std::optional< std::string > password
Password to match the username.
Definition Cluster.hpp:118
std::optional< std::string > username
Username/login.
Definition Cluster.hpp:115
uint32_t threads
The number of threads for the driver to pool.
Definition Cluster.hpp:91
uint32_t maxReadRequestsOutstanding
The maximum number of outstanding read requests at any given moment.
Definition Cluster.hpp:97
uint32_t maxWriteRequestsOutstanding
The maximum number of outstanding write requests at any given moment.
Definition Cluster.hpp:94
std::optional< std::string > certificate
SSL certificate.
Definition Cluster.hpp:112
uint32_t coreConnectionsPerHost
The number of connection per host to always have active.
Definition Cluster.hpp:100
std::variant< ContactPoints, SecureConnectionBundle > connectionInfo
Connection information; either ContactPoints or SecureConnectionBundle.
Definition Cluster.hpp:88
bool enableLog
Enables or disables cassandra driver logger.
Definition Cluster.hpp:79
std::size_t writeBatchSize
Size of batches when writing.
Definition Cluster.hpp:103
std::optional< uint32_t > queueSizeIO
Size of the IO queue.
Definition Cluster.hpp:109
static Settings defaultSettings()
Returns the default settings.
Definition Cluster.hpp:135
Settings withContactPoints(std::string_view contactPoints)
Creates a new Settings object as a copy of the current one with overridden contact points.
Definition Cluster.hpp:124