userver: proto_structs::Any Class Reference
Loading...
Searching...
No Matches
proto_structs::Any Class Referencefinal

#include </data/code/userver/libraries/proto-structs/include/userver/proto-structs/any.hpp>

Detailed Description

Wrapper for google.protobuf.Any which provides interface to access stored message as compatible struct.

Definition at line 19 of file any.hpp.

Public Member Functions

 Any () noexcept=default
 Creates empty Any.
 
 Any (google::protobuf::Any proto_any)
 Creates wrapper initializing its underlying storage with proto_any.
 
template<typename TStruct >
requires traits::CompatibleStruct<std::remove_cvref_t<TStruct>>
 Any (TStruct &&obj)
 Creates Any holding obj.
 
template<typename TStruct >
requires traits::CompatibleStruct<std::remove_cvref_t<TStruct>>
Anyoperator= (TStruct &&obj)
 Packs obj in Any
 
template<traits::CompatibleStruct TStruct>
bool Is () const noexcept
 Returns true if Any contains TStruct
 
template<traits::ProtoMessage TMessage>
bool Is () const noexcept
 Returns true if underlying google.protobuf.Any contains TMessage
 
template<traits::CompatibleStruct TStruct>
TStruct Unpack ()
 Unpacks Any to TStruct struct.
 
template<traits::ProtoMessage TMessage>
TMessage Unpack ()
 Unpacks underlying google.protobuf.Any to TMessage message.
 
template<typename TStruct >
requires traits::CompatibleStruct<std::remove_cvref_t<TStruct>>
void Pack (TStruct &&obj)
 Packs obj to Any
 
template<traits::ProtoMessage TMessage>
void Pack (const TMessage &message)
 Packs message to underlying google.protobuf.Any
 
const ::google::protobuf::Any & GetProtobufAny () const &noexcept
 Returns underlying google.protobuf.Any
 
::google::protobuf::Any GetProtobufAny () &&noexcept
 Returns underlying google.protobuf.Any
 

Constructor & Destructor Documentation

◆ Any() [1/2]

proto_structs::Any::Any ( google::protobuf::Any  proto_any)
inline

Creates wrapper initializing its underlying storage with proto_any.

Definition at line 25 of file any.hpp.

◆ Any() [2/2]

template<typename TStruct >
requires traits::CompatibleStruct<std::remove_cvref_t<TStruct>>
proto_structs::Any::Any ( TStruct &&  obj)
inline

Creates Any holding obj.

Template Parameters
TStructstruct with defined compatability
Exceptions
ConversionErrorif obj can't be converted to its compatible protobuf message
AnyPackErrorif compatible protobuf message can not be packed to google.protobuf.Any
Note
This overload only works for structs for which compatability is defined using proto_structs::CompatibleMessageTrait

Definition at line 35 of file any.hpp.

Member Function Documentation

◆ GetProtobufAny() [1/2]

::google::protobuf::Any proto_structs::Any::GetProtobufAny ( ) &&
inlinenoexcept

Returns underlying google.protobuf.Any

Definition at line 124 of file any.hpp.

◆ GetProtobufAny() [2/2]

const ::google::protobuf::Any & proto_structs::Any::GetProtobufAny ( ) const &
inlinenoexcept

Returns underlying google.protobuf.Any

Definition at line 121 of file any.hpp.

◆ Is() [1/2]

template<traits::CompatibleStruct TStruct>
bool proto_structs::Any::Is ( ) const
inlinenoexcept

Returns true if Any contains TStruct

Template Parameters
TStructstruct with defined compatability
Note
This method only works for structs for which compatability is defined using proto_structs::CompatibleMessageTrait

Definition at line 58 of file any.hpp.

◆ Is() [2/2]

template<traits::ProtoMessage TMessage>
bool proto_structs::Any::Is ( ) const
inlinenoexcept

Returns true if underlying google.protobuf.Any contains TMessage

Template Parameters
TMessageprotobuf message type

Definition at line 66 of file any.hpp.

◆ operator=()

template<typename TStruct >
requires traits::CompatibleStruct<std::remove_cvref_t<TStruct>>
Any & proto_structs::Any::operator= ( TStruct &&  obj)
inline

Packs obj in Any

Template Parameters
TStructstruct with defined compatability
Exceptions
ConversionErrorif obj can't be converted to its compatible protobuf message
AnyPackErrorif compatible protobuf message can not be packed to google.protobuf.Any
Note
This overload only works for structs for which compatability is defined using proto_structs::CompatibleMessageTrait
Method caches obj and later calls to Get will not trigger unpacking

Definition at line 48 of file any.hpp.

◆ Pack() [1/2]

template<traits::ProtoMessage TMessage>
void proto_structs::Any::Pack ( const TMessage &  message)
inline

Packs message to underlying google.protobuf.Any

Template Parameters
TMessageprotobuf message type
Exceptions
AnyPackErrorif packing of protobuf message to google.protobuf.Any had failed

Definition at line 114 of file any.hpp.

◆ Pack() [2/2]

template<typename TStruct >
requires traits::CompatibleStruct<std::remove_cvref_t<TStruct>>
void proto_structs::Any::Pack ( TStruct &&  obj)
inline

Packs obj to Any

Template Parameters
TStructstruct with defined compatability
Exceptions
ConversionErrorif obj can't be converted to its compatible protobuf message
AnyPackErrorif packing of compatible protobuf message to google.protobuf.Any had failed
Note
This method only works for structs for which compatability is defined using proto_structs::CompatibleMessageTrait
Method caches obj and later calls to Get will not trigger unpacking

Definition at line 105 of file any.hpp.

◆ Unpack() [1/2]

template<traits::CompatibleStruct TStruct>
TStruct proto_structs::Any::Unpack ( )
inline

Unpacks Any to TStruct struct.

Template Parameters
TStructstruct with defined compatability
Exceptions
AnyUnpackErrorif underlying google.protobuf.Any does not contain message compatible to TStruct
ConversionErrorif struct can be converted from its compatible message
Note
This method only works for structs for which compatability is defined using proto_structs::CompatibleMessageTrait

Definition at line 77 of file any.hpp.

◆ Unpack() [2/2]

template<traits::ProtoMessage TMessage>
TMessage proto_structs::Any::Unpack ( )
inline

Unpacks underlying google.protobuf.Any to TMessage message.

Template Parameters
TMessageprotobuf message type
Exceptions
AnyUnpackErrorif underlying google.protobuf.Any does not contain TMessage type message

Definition at line 86 of file any.hpp.


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