Line data Source code
1 : #include "source/common/protobuf/visitor_helper.h" 2 : 3 : namespace Envoy { 4 : namespace ProtobufMessage { 5 : namespace Helper { 6 : 7 687 : std::unique_ptr<Protobuf::Message> typeUrlToMessage(absl::string_view type_url) { 8 687 : const absl::string_view inner_type_name = TypeUtil::typeUrlToDescriptorFullName(type_url); 9 687 : const Protobuf::Descriptor* inner_descriptor = 10 687 : Protobuf::DescriptorPool::generated_pool()->FindMessageTypeByName( 11 687 : std::string(inner_type_name)); 12 687 : if (inner_descriptor == nullptr) { 13 11 : return nullptr; 14 11 : } 15 676 : auto* inner_message_prototype = 16 676 : Protobuf::MessageFactory::generated_factory()->GetPrototype(inner_descriptor); 17 676 : return std::unique_ptr<Protobuf::Message>(inner_message_prototype->New()); 18 687 : } 19 : 20 : ScopedMessageParents::ScopedMessageParents(std::vector<const Protobuf::Message*>& parents, 21 : const Protobuf::Message& message) 22 857264 : : parents_(parents) { 23 857264 : parents_.push_back(&message); 24 857264 : } 25 : 26 857264 : ScopedMessageParents::~ScopedMessageParents() { parents_.pop_back(); } 27 : 28 : } // namespace Helper 29 : } // namespace ProtobufMessage 30 : } // namespace Envoy