userver: ugrpc::BaseVisitor< Callback > Class Template Reference
Loading...
Searching...
No Matches
ugrpc::BaseVisitor< Callback > Class Template Referenceabstract

#include <userver/ugrpc/protobuf_visit.hpp>

Detailed Description

template<typename Callback>
class ugrpc::BaseVisitor< Callback >

Base class for FieldsVisitor and MessagesVisitor. Provides the interface and contains common code to use the data collected in the VisitorCompiler.

Definition at line 172 of file protobuf_visit.hpp.

+ Inheritance diagram for ugrpc::BaseVisitor< Callback >:

Public Types

enum class  LockBehavior {
  kNone = 0 ,
  kShared = 1
}
 

Public Member Functions

void Visit (google::protobuf::Message &message, Callback callback)
 Execute a callback without recursion.
 
void VisitRecursive (google::protobuf::Message &message, Callback callback)
 Execute a callback recursively.
 
void Compile (const google::protobuf::Descriptor *descriptor)
 Compiles the visitor for the given message type and its dependent types.
 
void Compile (const DescriptorList &descriptors)
 Compiles the visitor for the given message types and their dependent types.
 
void CompileAllGenerated ()
 Compiles the visitor for all message types we can find. Not guaranteed to find all message types.
 
void CompileGenerated (std::string_view message_name)
 Compiles the visitor for the given generated message type and its dependent types.
 
void CompileGenerated (utils::span< std::string_view > message_names)
 Compiles the visitor for the given generated message type and their dependent types.
 
bool ContainsSelected (const google::protobuf::Descriptor *descriptor)
 Efficiently checks if the message contains any selected structures.
 
virtual void CompileOne (const google::protobuf::Descriptor &descriptor)=0
 Compile one message without nested.
 
virtual bool IsSelected (const google::protobuf::Descriptor &) const =0
 Checks if the message is selected or has anything selected.
 

Protected Member Functions

 BaseVisitor (LockBehavior lock_behavior)
 
virtual void DoVisit (google::protobuf::Message &message, Callback callback) const =0
 Execute a callback without recursion.
 

Member Enumeration Documentation

◆ LockBehavior

enum class ugrpc::VisitorCompiler::LockBehavior
stronginherited
Enumerator
kNone 

Do not take shared_mutex locks for any operation on the visitor.

kShared 

Take shared_lock for all read operations on the visitor and unique_lock for all Compile operations.

Definition at line 72 of file protobuf_visit.hpp.

Constructor & Destructor Documentation

◆ BaseVisitor()

template<typename Callback >
ugrpc::BaseVisitor< Callback >::BaseVisitor ( LockBehavior lock_behavior)
inlineexplicitprotected

Definition at line 200 of file protobuf_visit.hpp.

Member Function Documentation

◆ ContainsSelected()

bool ugrpc::VisitorCompiler::ContainsSelected ( const google::protobuf::Descriptor * descriptor)
inherited

Efficiently checks if the message contains any selected structures.

You may want to call this before Visit and VisitRecursive to avoid a copy of the message beforehand if you require one.

◆ Visit()

template<typename Callback >
void ugrpc::BaseVisitor< Callback >::Visit ( google::protobuf::Message & message,
Callback callback )
inline

Execute a callback without recursion.

Equivalent to VisitFields but utilizes the precompilation data from Compile

Definition at line 178 of file protobuf_visit.hpp.

◆ VisitRecursive()

template<typename Callback >
void ugrpc::BaseVisitor< Callback >::VisitRecursive ( google::protobuf::Message & message,
Callback callback )
inline

Execute a callback recursively.

Equivalent to VisitFieldsRecursive and VisitMessagesRecursive but utilizes the precompilation data from Compile

Definition at line 190 of file protobuf_visit.hpp.


The documentation for this class was generated from the following file: