Electroneum
Loading...
Searching...
No Matches
hw::trezor::MessageMapper Class Reference

#include <messages_map.hpp>

Public Member Functions

 MessageMapper ()

Static Public Member Functions

::google::protobuf::Message * get_message (int wire_number)
::google::protobuf::Message * get_message (messages::MessageType)
::google::protobuf::Message * get_message (const std::string &msg_name)
static messages::MessageType get_message_wire_number (const google::protobuf::Message *msg)
static messages::MessageType get_message_wire_number (const google::protobuf::Message &msg)
static messages::MessageType get_message_wire_number (const std::string &msg_name)
template<class t_message = google::protobuf::Message>
static messages::MessageType get_message_wire_number ()

Detailed Description

Definition at line 52 of file messages_map.hpp.

Constructor & Destructor Documentation

◆ MessageMapper()

hw::trezor::MessageMapper::MessageMapper ( )
inline

Definition at line 54 of file messages_map.hpp.

54 {
55
56 }

Member Function Documentation

◆ get_message() [1/3]

google::protobuf::Message * hw::trezor::MessageMapper::get_message ( const std::string & msg_name)
static

Definition at line 72 of file messages_map.cpp.

72 {
73 // Each package instantiation so lookup works
74 hw::trezor::messages::common::Success::default_instance();
75 hw::trezor::messages::management::Cancel::default_instance();
76 hw::trezor::messages::Electroneum::ElectroneumGetAddress::default_instance();
77
78#ifdef WITH_TREZOR_DEBUGGING
79 hw::trezor::messages::debug::DebugLinkDecision::default_instance();
80#endif
81
82 google::protobuf::Descriptor const * desc = nullptr;
83 for(const string &text : PACKAGES){
84 desc = google::protobuf::DescriptorPool::generated_pool()
85 ->FindMessageTypeByName(text + msg_name);
86 if (desc != nullptr){
87 break;
88 }
89 }
90
91 if (desc == nullptr){
92 throw exc::EncodingException(std::string("Message not found: ") + msg_name);
93 }
94
95 google::protobuf::Message* message =
96 google::protobuf::MessageFactory::generated_factory()
97 ->GetPrototype(desc)->New();
98
99 return message;
100
101// // CODEGEN way, fast
102// switch(wire_number){
103// case 501:
104// return new messages::Electroneum::ElectroneumTransactionSignRequest();
105// default:
106// throw std::runtime_error("not implemented");
107// }
108//
109// // CODEGEN message -> number: specification
110// // messages::MessageType get_message_wire_number(const messages::Electroneum::ElectroneumTransactionSignRequest * msg) { return 501; }
111// // messages::MessageType get_message_wire_number(const messages::management::ping * msg)
112//
113 }
std::string message("Message requiring signing")
const char * PACKAGES[]
Here is the call graph for this function:

◆ get_message() [2/3]

google::protobuf::Message * hw::trezor::MessageMapper::get_message ( int wire_number)
static

Definition at line 58 of file messages_map.cpp.

58 {
59 return MessageMapper::get_message(static_cast<messages::MessageType>(wire_number));
60 }
::google::protobuf::Message * get_message(int wire_number)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_message() [3/3]

google::protobuf::Message * hw::trezor::MessageMapper::get_message ( messages::MessageType wire_number)
static

Definition at line 62 of file messages_map.cpp.

62 {
63 const string &messageTypeName = hw::trezor::messages::MessageType_Name(wire_number);
64 if (messageTypeName.empty()) {
65 throw exc::EncodingException(std::string("Message descriptor not found: ") + std::to_string(wire_number));
66 }
67
68 string messageName = messageTypeName.substr(strlen(TYPE_PREFIX));
69 return MessageMapper::get_message(messageName);
70 }
const char * TYPE_PREFIX
Here is the call graph for this function:

◆ get_message_wire_number() [1/4]

template<class t_message = google::protobuf::Message>
messages::MessageType hw::trezor::MessageMapper::get_message_wire_number ( )
inlinestatic

Definition at line 66 of file messages_map.hpp.

66 {
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 }
static messages::MessageType get_message_wire_number()
const char * name
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_message_wire_number() [2/4]

messages::MessageType hw::trezor::MessageMapper::get_message_wire_number ( const google::protobuf::Message & msg)
static

Definition at line 119 of file messages_map.cpp.

119 {
120 return MessageMapper::get_message_wire_number(msg.GetDescriptor()->name());
121 }
Here is the call graph for this function:

◆ get_message_wire_number() [3/4]

messages::MessageType hw::trezor::MessageMapper::get_message_wire_number ( const google::protobuf::Message * msg)
static

Definition at line 115 of file messages_map.cpp.

115 {
116 return MessageMapper::get_message_wire_number(msg->GetDescriptor()->name());
117 }
Here is the call graph for this function:

◆ get_message_wire_number() [4/4]

messages::MessageType hw::trezor::MessageMapper::get_message_wire_number ( const std::string & msg_name)
static

Definition at line 123 of file messages_map.cpp.

123 {
124 string enumMessageName = std::string(TYPE_PREFIX) + msg_name;
125
126 messages::MessageType res;
127 bool r = hw::trezor::messages::MessageType_Parse(enumMessageName, &res);
128 if (!r){
129 throw exc::EncodingException(std::string("Message ") + msg_name + " not found");
130 }
131
132 return res;
133 }
const char * res

The documentation for this class was generated from the following files:
  • /home/abuild/rpmbuild/BUILD/electroneum-5.1.3.1-build/electroneum-5.1.3.1/src/device_trezor/trezor/messages_map.hpp
  • /home/abuild/rpmbuild/BUILD/electroneum-5.1.3.1-build/electroneum-5.1.3.1/src/device_trezor/trezor/messages_map.cpp