LibQuicR
quicr::messages::TrackExtensions Class Reference

Mutable and immutable track-scoped extension maps. More...

#include <ctrl_message_types.h>

Public Member Functions

 TrackExtensions ()=default
 Creates empty extension maps. More...
 
 TrackExtensions (const std::map< std::uint64_t, Bytes > &ext)
 
template<typename T >
TrackExtensions & Add (ExtensionType type, const T &value)
 
template<typename T >
TrackExtensions & AddOptional (ExtensionType type, const std::optional< T > &value)
 
template<typename T >
TrackExtensions & AddImmutable (ExtensionType type, const T &value)
 
template<typename T >
std::optional< T > Get (ExtensionType type) const
 
template<typename T >
std::optional< T > GetImmutable (ExtensionType type) const
 
auto begin () const noexcept
 
auto end () const noexcept
 

Public Attributes

std::map< std::uint64_t, Bytes > extensions
 Mutable extensions keyed by absolute type. More...
 
std::map< std::uint64_t, Bytes > immutable_extensions
 Immutable nested extensions keyed by absolute type. More...
 

Detailed Description

Mutable and immutable track-scoped extension maps.

Constructor & Destructor Documentation

◆ TrackExtensions() [1/2]

quicr::messages::TrackExtensions::TrackExtensions ( )
default

Creates empty extension maps.

◆ TrackExtensions() [2/2]

quicr::messages::TrackExtensions::TrackExtensions ( const std::map< std::uint64_t, Bytes > &  ext)
inline
Parameters
extInitial mutable extension values.

Member Function Documentation

◆ Add()

template<typename T >
TrackExtensions& quicr::messages::TrackExtensions::Add ( ExtensionType  type,
const T &  value 
)
inline

Encodes and replaces a mutable extension.

Template Parameters
TValue type.
Parameters
typeExtension key.
valueValue to encode.
Exceptions
std::invalid_argumentif type is kImmutable.
Returns
This collection.

◆ AddImmutable()

template<typename T >
TrackExtensions& quicr::messages::TrackExtensions::AddImmutable ( ExtensionType  type,
const T &  value 
)
inline

Encodes and replaces an immutable extension.

Template Parameters
TValue type.
Parameters
typeNested extension key.
valueValue to encode.
Returns
This collection.

◆ AddOptional()

template<typename T >
TrackExtensions& quicr::messages::TrackExtensions::AddOptional ( ExtensionType  type,
const std::optional< T > &  value 
)
inline

Adds a mutable extension only when present.

Template Parameters
TValue type.
Parameters
typeExtension key.
valueOptional value.
Returns
This collection.

◆ begin()

auto quicr::messages::TrackExtensions::begin ( ) const
inlinenoexcept
Returns
Const iterator to the first mutable extension.

◆ end()

auto quicr::messages::TrackExtensions::end ( ) const
inlinenoexcept
Returns
Const iterator past the last mutable extension.

◆ Get()

template<typename T >
std::optional<T> quicr::messages::TrackExtensions::Get ( ExtensionType  type) const
inline

Decodes a mutable extension, if present.

Template Parameters
TRequested result type.
Parameters
typeExtension key.
Returns
Decoded value or std::nullopt when absent.

◆ GetImmutable()

template<typename T >
std::optional<T> quicr::messages::TrackExtensions::GetImmutable ( ExtensionType  type) const
inline

Decodes an immutable extension, if present.

Template Parameters
TRequested result type.
Parameters
typeNested extension key.
Returns
Decoded value or std::nullopt when absent.

Member Data Documentation

◆ extensions

std::map<std::uint64_t, Bytes> quicr::messages::TrackExtensions::extensions

Mutable extensions keyed by absolute type.

◆ immutable_extensions

std::map<std::uint64_t, Bytes> quicr::messages::TrackExtensions::immutable_extensions

Immutable nested extensions keyed by absolute type.


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