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