Couchbase C++ SDK
1.4.0 (rev. 59aa900)
Toggle main menu visibility
Loading...
Searching...
No Matches
get_replica_result.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/codec/default_json_transcoder.hxx
>
21
#include <
couchbase/result.hxx
>
22
23
#include <vector>
24
25
namespace
couchbase
26
{
27
#ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
28
namespace
crypto
29
{
30
class
manager;
31
}
// namespace crypto
32
#endif
33
41
class
get_replica_result
:
public
result
42
{
43
public
:
48
get_replica_result
() =
default
;
49
61
get_replica_result
(
couchbase::cas
cas
,
62
bool
is_replica
,
63
codec::encoded_value
value,
64
std::shared_ptr<crypto::manager> crypto_manager = {})
65
:
result
{
cas
}
66
, is_replica_{
is_replica
}
67
, value_{ std::move(value) }
68
, crypto_manager_{ std::move(crypto_manager) }
69
{
70
}
71
79
[[nodiscard]]
auto
is_replica
() const ->
bool
80
{
81
return
is_replica_;
82
}
83
101
template
<
typename
Transcoder, std::enable_if_t<codec::is_transcoder_v<Transcoder>,
bool
> = true>
102
[[nodiscard]]
auto
content_as
() const -> typename Transcoder::document_type
103
{
104
if
constexpr
(
codec::is_crypto_transcoder_v<Transcoder>
) {
105
return
Transcoder::decode(value_, crypto_manager_);
106
}
else
{
107
return
Transcoder::decode(value_);
108
}
109
}
110
122
template
<
typename
Document,
123
typename
Transcoder =
codec::default_json_transcoder
,
124
std::enable_if_t<!codec::is_transcoder_v<Document>,
bool
> =
true
,
125
std::enable_if_t<codec::is_transcoder_v<Transcoder>,
bool
> =
true
>
126
[[nodiscard]]
auto
content_as
() const -> Document
127
{
128
if
constexpr
(
codec::is_crypto_transcoder_v<Transcoder>
) {
129
return
Transcoder::template decode<Document>(value_, crypto_manager_);
130
}
else
{
131
return
Transcoder::template decode<Document>(value_);
132
}
133
}
134
135
private
:
136
bool
is_replica_{
false
};
137
codec::encoded_value value_{};
138
std::shared_ptr<crypto::manager> crypto_manager_{};
139
};
140
141
}
// namespace couchbase
couchbase::cas
CAS is a special type that represented in protocol using unsigned 64-bit integer, but only equality c...
Definition
cas.hxx:34
couchbase::get_replica_result::content_as
auto content_as() const -> typename Transcoder::document_type
Decodes content of the document using given transcoder.
Definition
get_replica_result.hxx:102
couchbase::get_replica_result::is_replica
auto is_replica() const -> bool
Definition
get_replica_result.hxx:79
couchbase::get_replica_result::get_replica_result
get_replica_result()=default
couchbase::get_replica_result::get_replica_result
get_replica_result(couchbase::cas cas, bool is_replica, codec::encoded_value value, std::shared_ptr< crypto::manager > crypto_manager={})
Constructs result for get_any_replica operation, or an entry for get_all_replicas operation.
Definition
get_replica_result.hxx:61
couchbase::get_replica_result::content_as
auto content_as() const -> Document
Decodes content of the document using given codec.
Definition
get_replica_result.hxx:126
couchbase::result
Base class for operations of data service.
Definition
result.hxx:35
couchbase::result::cas
auto cas() const -> couchbase::cas
Definition
result.hxx:73
couchbase::result::result
result()=default
default_json_transcoder.hxx
couchbase::codec::is_crypto_transcoder_v
constexpr bool is_crypto_transcoder_v
Definition
transcoder_traits.hxx:36
couchbase::codec::default_json_transcoder
json_transcoder< tao_json_serializer > default_json_transcoder
Definition
default_json_transcoder.hxx:28
couchbase::crypto
Definition
internal.hxx:27
couchbase
Represents a single item from the result of scan().
Definition
allow_querying_search_index_options.hxx:28
result.hxx
couchbase::codec::encoded_value
Definition
encoded_value.hxx:27
couchbase
get_replica_result.hxx
Generated by
1.17.0