Couchbase C++ SDK
1.4.0 (rev. 59aa900)
Toggle main menu visibility
Loading...
Searching...
No Matches
common_options.hxx
Go to the documentation of this file.
1
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
/*
3
* Copyright 2020-Present Couchbase, Inc.
4
*
5
* Licensed under the Apache License, Version 2.0 (the "License");
6
* you may not use this file except in compliance with the License.
7
* You may obtain a copy of the License at
8
*
9
* http://www.apache.org/licenses/LICENSE-2.0
10
*
11
* Unless required by applicable law or agreed to in writing, software
12
* distributed under the License is distributed on an "AS IS" BASIS,
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
* See the License for the specific language governing permissions and
15
* limitations under the License.
16
*/
17
18
#pragma once
19
20
#include <
couchbase/retry_strategy.hxx
>
21
#include <
couchbase/tracing/request_span.hxx
>
22
23
#include <chrono>
24
#include <memory>
25
#include <optional>
26
#include <type_traits>
27
28
namespace
couchbase
29
{
36
template
<
typename
derived_
class
>
37
class
common_options
38
{
39
public
:
52
auto
timeout
(
const
std::chrono::milliseconds
timeout
) -> derived_class&
53
{
54
timeout_ =
timeout
;
55
return
self
();
56
}
57
67
auto
retry_strategy
(
const
std::shared_ptr<retry_strategy> strategy) -> derived_class&
68
{
69
retry_strategy_ = strategy;
70
return
self
();
71
}
72
79
auto
parent_span
(std::shared_ptr<tracing::request_span> span) -> derived_class&
80
{
81
parent_span_ = std::move(span);
82
return
self
();
83
}
84
91
struct
built
{
92
const
std::optional<std::chrono::milliseconds>
timeout
;
93
const
std::shared_ptr<couchbase::retry_strategy>
retry_strategy
;
94
const
std::shared_ptr<tracing::request_span>
parent_span
;
95
};
96
97
protected
:
103
[[nodiscard]]
auto
build_common_options
() const ->
built
104
{
105
return
{ timeout_, retry_strategy_, parent_span_ };
106
}
107
116
auto
self
() -> derived_class&
117
{
118
return
*
static_cast<
derived_class*
>
(
this
);
119
}
120
121
private
:
122
std::optional<std::chrono::milliseconds> timeout_{};
123
std::shared_ptr<couchbase::retry_strategy> retry_strategy_{
nullptr
};
124
std::shared_ptr<tracing::request_span> parent_span_{
nullptr
};
125
};
126
127
}
// namespace couchbase
couchbase::common_options
Common options that used by most operations.
Definition
common_options.hxx:38
couchbase::common_options::retry_strategy
auto retry_strategy(const std::shared_ptr< retry_strategy > strategy) -> derived_class &
Specifies a custom couchbase::retry_strategy for this operation.
Definition
common_options.hxx:67
couchbase::common_options::self
auto self() -> derived_class &
Allows to return the right options builder instance for child implementations.
Definition
common_options.hxx:116
couchbase::common_options::parent_span
auto parent_span(std::shared_ptr< tracing::request_span > span) -> derived_class &
Definition
common_options.hxx:79
couchbase::common_options::timeout
auto timeout(const std::chrono::milliseconds timeout) -> derived_class &
Specifies a custom per-operation timeout.
Definition
common_options.hxx:52
couchbase::common_options::build_common_options
auto build_common_options() const -> built
Definition
common_options.hxx:103
couchbase
Represents a single item from the result of scan().
Definition
allow_querying_search_index_options.hxx:28
request_span.hxx
retry_strategy.hxx
couchbase::common_options::built
Immutable value object representing consistent options.
Definition
common_options.hxx:91
couchbase::common_options::built::timeout
const std::optional< std::chrono::milliseconds > timeout
Definition
common_options.hxx:92
couchbase::common_options::built::retry_strategy
const std::shared_ptr< couchbase::retry_strategy > retry_strategy
Definition
common_options.hxx:93
couchbase::common_options::built::parent_span
const std::shared_ptr< tracing::request_span > parent_span
Definition
common_options.hxx:94
couchbase
common_options.hxx
Generated by
1.17.0