Couchbase C++ SDK
1.4.0 (rev. 59aa900)
Toggle main menu visibility
Loading...
Searching...
No Matches
get_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 <chrono>
24
#include <cinttypes>
25
#include <memory>
26
#include <optional>
27
#include <vector>
28
29
namespace
couchbase
30
{
31
#ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
32
namespace
crypto
33
{
34
class
manager;
35
}
// namespace crypto
36
#endif
37
44
class
get_result
:
public
result
45
{
46
public
:
51
get_result
() =
default
;
52
64
get_result
(
couchbase::cas
cas
,
65
codec::encoded_value
value,
66
std::optional<std::chrono::system_clock::time_point>
expiry_time
,
67
std::shared_ptr<crypto::manager> crypto_manager = {})
68
:
result
{
cas
}
69
, value_{ std::move(value) }
70
, expiry_time_{
expiry_time
}
71
, crypto_manager_{ std::move(crypto_manager) }
72
{
73
}
74
86
template
<
typename
Document,
87
typename
Transcoder =
codec::default_json_transcoder
,
88
std::enable_if_t<!codec::is_transcoder_v<Document>,
bool
> =
true
,
89
std::enable_if_t<codec::is_transcoder_v<Transcoder>,
bool
> =
true
>
90
[[nodiscard]]
auto
content_as
() const -> Document
91
{
92
if
constexpr
(
codec::is_crypto_transcoder_v<Transcoder>
) {
93
return
Transcoder::template decode<Document>(value_, crypto_manager_);
94
}
else
{
95
return
Transcoder::template decode<Document>(value_);
96
}
97
}
98
116
template
<
typename
Transcoder, std::enable_if_t<codec::is_transcoder_v<Transcoder>,
bool
> = true>
117
[[nodiscard]]
auto
content_as
() const -> typename Transcoder::document_type
118
{
119
if
constexpr
(
codec::is_crypto_transcoder_v<Transcoder>
) {
120
return
Transcoder::decode(value_, crypto_manager_);
121
}
else
{
122
return
Transcoder::decode(value_);
123
}
124
}
125
139
[[nodiscard]]
auto
expiry_time
() const
140
-> const std::optional<std::chrono::system_clock::time_point>&
141
{
142
return
expiry_time_;
143
}
144
145
private
:
146
codec::encoded_value
value_{};
147
std::optional<std::chrono::system_clock::time_point> expiry_time_{};
148
std::shared_ptr<crypto::manager> crypto_manager_{};
149
};
150
151
}
// 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_result::content_as
auto content_as() const -> typename Transcoder::document_type
Decodes content of the document using given codec.
Definition
get_result.hxx:117
couchbase::get_result::get_result
get_result()=default
couchbase::get_result::get_result
get_result(couchbase::cas cas, codec::encoded_value value, std::optional< std::chrono::system_clock::time_point > expiry_time, std::shared_ptr< crypto::manager > crypto_manager={})
Constructs result for get operation.
Definition
get_result.hxx:64
couchbase::get_result::content_as
auto content_as() const -> Document
Decodes content of the document using given codec.
Definition
get_result.hxx:90
couchbase::get_result::expiry_time
auto expiry_time() const -> const std::optional< std::chrono::system_clock::time_point > &
If the document has an expiry, returns the point in time when the loaded document expires.
Definition
get_result.hxx:139
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_result.hxx
Generated by
1.17.0