Line data Source code
1 : /**
2 : * Copyright Soramitsu Co., Ltd. All Rights Reserved.
3 : * SPDX-License-Identifier: Apache-2.0
4 : */
5 :
6 : #include "backend/protobuf/query_responses/proto_error_query_response.hpp"
7 : #include "utils/variant_deserializer.hpp"
8 :
9 : namespace shared_model {
10 : namespace proto {
11 :
12 : template <typename QueryResponseType>
13 : ErrorQueryResponse::ErrorQueryResponse(QueryResponseType &&response)
14 156 : : CopyableProto(std::forward<QueryResponseType>(response)),
15 : variant_{[this] {
16 156 : auto &&ar = proto_->error_response();
17 :
18 156 : unsigned which = ar.GetDescriptor()
19 156 : ->FindFieldByName("reason")
20 156 : ->enum_type()
21 156 : ->FindValueByNumber(ar.reason())
22 156 : ->index();
23 156 : return shared_model::detail::
24 : variant_impl<ProtoQueryErrorResponseListType>::template load<
25 : ProtoQueryErrorResponseVariantType>(
26 156 : std::forward<decltype(ar)>(ar), which);
27 0 : }()},
28 156 : ivariant_{QueryErrorResponseVariantType{variant_}} {}
29 :
30 : template ErrorQueryResponse::ErrorQueryResponse(
31 : ErrorQueryResponse::TransportType &);
32 : template ErrorQueryResponse::ErrorQueryResponse(
33 : const ErrorQueryResponse::TransportType &);
34 : template ErrorQueryResponse::ErrorQueryResponse(
35 : ErrorQueryResponse::TransportType &&);
36 :
37 : ErrorQueryResponse::ErrorQueryResponse(const ErrorQueryResponse &o)
38 0 : : ErrorQueryResponse(o.proto_) {}
39 :
40 : ErrorQueryResponse::ErrorQueryResponse(ErrorQueryResponse &&o) noexcept
41 156 : : ErrorQueryResponse(std::move(o.proto_)) {}
42 :
43 : const ErrorQueryResponse::QueryErrorResponseVariantType &
44 : ErrorQueryResponse::get() const {
45 106 : return ivariant_;
46 : }
47 :
48 : const ErrorQueryResponse::ErrorMessageType &
49 : ErrorQueryResponse::errorMessage() const {
50 3 : return proto_->error_response().message();
51 : }
52 :
53 : ErrorQueryResponse::ErrorCodeType ErrorQueryResponse::errorCode() const {
54 26 : return proto_->error_response().error_code();
55 : }
56 :
57 : } // namespace proto
58 : } // namespace shared_model
|