1
#include "source/common/protobuf/visitor_helper.h"
2

            
3
namespace Envoy {
4
namespace ProtobufMessage {
5
namespace Helper {
6

            
7
46
std::unique_ptr<Protobuf::Message> typeUrlToMessage(absl::string_view type_url) {
8
46
  const absl::string_view inner_type_name = TypeUtil::typeUrlToDescriptorFullName(type_url);
9
46
  const Protobuf::Descriptor* inner_descriptor =
10
46
      Protobuf::DescriptorPool::generated_pool()->FindMessageTypeByName(
11
46
          std::string(inner_type_name));
12
46
  if (inner_descriptor == nullptr) {
13
3
    return nullptr;
14
3
  }
15
43
  auto* inner_message_prototype =
16
43
      Protobuf::MessageFactory::generated_factory()->GetPrototype(inner_descriptor);
17
43
  return std::unique_ptr<Protobuf::Message>(inner_message_prototype->New());
18
46
}
19

            
20
ScopedMessageParents::ScopedMessageParents(std::vector<const Protobuf::Message*>& parents,
21
                                           const Protobuf::Message& message)
22
15157376
    : parents_(parents) {
23
15157376
  parents_.push_back(&message);
24
15157376
}
25

            
26
15157376
ScopedMessageParents::~ScopedMessageParents() { parents_.pop_back(); }
27

            
28
} // namespace Helper
29
} // namespace ProtobufMessage
30
} // namespace Envoy