Electroneum
Toggle main menu visibility
Loading...
Searching...
No Matches
messages_map.hpp
Go to the documentation of this file.
1
// Copyright (c) 2017-Present, Electroneum
2
//
3
// All rights reserved.
4
//
5
// Redistribution and use in source and binary forms, with or without modification, are
6
// permitted provided that the following conditions are met:
7
//
8
// 1. Redistributions of source code must retain the above copyright notice, this list of
9
// conditions and the following disclaimer.
10
//
11
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
12
// of conditions and the following disclaimer in the documentation and/or other
13
// materials provided with the distribution.
14
//
15
// 3. Neither the name of the copyright holder nor the names of its contributors may be
16
// used to endorse or promote products derived from this software without specific
17
// prior written permission.
18
//
19
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
20
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
22
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
27
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
//
29
30
#ifndef ELECTRONEUM_MESSAGES_MAP_H
31
#define ELECTRONEUM_MESSAGES_MAP_H
32
33
#include <string>
34
#include <type_traits>
35
#include <memory>
36
#include "
exceptions.hpp
"
37
38
#include "
trezor_defs.hpp
"
39
40
#include <google/protobuf/stubs/common.h>
41
#include <google/protobuf/generated_message_util.h>
42
#include <google/protobuf/repeated_field.h>
43
#include <google/protobuf/extension_set.h>
44
#include <google/protobuf/generated_enum_reflection.h>
45
#include "google/protobuf/descriptor.pb.h"
46
47
#include "messages/messages.pb.h"
48
49
namespace
hw
{
50
namespace
trezor
{
51
52
class
MessageMapper
{
53
public
:
54
MessageMapper
() {
55
56
}
57
58
static ::google::protobuf::Message *
get_message
(
int
wire_number);
59
static ::google::protobuf::Message *
get_message
(messages::MessageType);
60
static ::google::protobuf::Message *
get_message
(
const
std::string & msg_name);
61
static
messages::MessageType
get_message_wire_number
(
const
google::protobuf::Message * msg);
62
static
messages::MessageType
get_message_wire_number
(
const
google::protobuf::Message & msg);
63
static
messages::MessageType
get_message_wire_number
(
const
std::string & msg_name);
64
65
template
<
class
t_message=google::protobuf::Message>
66
static
messages::MessageType
get_message_wire_number
() {
67
BOOST_STATIC_ASSERT(boost::is_base_of<google::protobuf::Message, t_message>::value);
68
return
get_message_wire_number
(t_message::default_instance().GetDescriptor()->name());
69
}
70
};
71
72
template
<
class
t_message=google::protobuf::Message>
73
std::shared_ptr<t_message>
message_ptr_retype
(std::shared_ptr<google::protobuf::Message> & in){
74
BOOST_STATIC_ASSERT(boost::is_base_of<google::protobuf::Message, t_message>::value);
75
if
(!in){
76
return
nullptr
;
77
}
78
79
return
std::dynamic_pointer_cast<t_message>(in);
80
}
81
82
template
<
class
t_message=google::protobuf::Message>
83
std::shared_ptr<t_message>
message_ptr_retype_static
(std::shared_ptr<google::protobuf::Message> & in){
84
BOOST_STATIC_ASSERT(boost::is_base_of<google::protobuf::Message, t_message>::value);
85
if
(!in){
86
return
nullptr
;
87
}
88
89
return
std::static_pointer_cast<t_message>(in);
90
}
91
92
}}
93
94
#endif
//ELECTRONEUM_MESSAGES_MAP_H
hw::trezor::MessageMapper::get_message_wire_number
static messages::MessageType get_message_wire_number()
Definition
messages_map.hpp:66
hw::trezor::MessageMapper::MessageMapper
MessageMapper()
Definition
messages_map.hpp:54
hw::trezor::MessageMapper::get_message
::google::protobuf::Message * get_message(int wire_number)
Definition
messages_map.cpp:58
exceptions.hpp
hw::trezor
Definition
device_trezor.cpp:33
hw::trezor::message_ptr_retype
std::shared_ptr< t_message > message_ptr_retype(std::shared_ptr< google::protobuf::Message > &in)
Definition
messages_map.hpp:73
hw::trezor::message_ptr_retype_static
std::shared_ptr< t_message > message_ptr_retype_static(std::shared_ptr< google::protobuf::Message > &in)
Definition
messages_map.hpp:83
hw
Definition
device.cpp:38
trezor_defs.hpp
src
device_trezor
trezor
messages_map.hpp
Generated on
for Electroneum by
1.17.0