Couchbase C++ SDK 1.0.1 (rev. 58d46d7)
Loading...
Searching...
No Matches
raw_binary_transcoder.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
24
25#include <type_traits>
26
27namespace couchbase::codec
28{
30{
31public:
32 using document_type = std::vector<std::byte>;
33
34 static auto encode(document_type document) -> encoded_value
35 {
36 return { std::move(document), codec_flags::binary_common_flags };
37 }
38
39 template<typename Document = document_type,
40 std::enable_if_t<std::is_same_v<Document, document_type>, bool> = true>
41 static auto decode(const encoded_value& encoded) -> Document
42 {
44 throw std::system_error(
46 "raw_binary_transcoder expects document to have BINARY common flags, flags=" +
47 std::to_string(encoded.flags));
48 }
49
50 return encoded.data;
51 }
52};
53
54#ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
55template<>
56struct is_transcoder<raw_binary_transcoder> : public std::true_type {
57};
58#endif
59} // namespace couchbase::codec
Definition raw_binary_transcoder.hxx:30
std::vector< std::byte > document_type
Definition raw_binary_transcoder.hxx:32
static auto encode(document_type document) -> encoded_value
Definition raw_binary_transcoder.hxx:34
static auto decode(const encoded_value &encoded) -> Document
Definition raw_binary_transcoder.hxx:41
constexpr std::uint32_t binary_common_flags
Definition codec_flags.hxx:147
constexpr auto has_common_flags(std::uint32_t flags) -> bool
Checks whether the upper 8 bits are set, indicating common flags presence.
Definition codec_flags.hxx:96
Definition binary_noop_serializer.hxx:24
@ decoding_failure
Returned when decoding of the data into the user object failed.
Definition encoded_value.hxx:27