LibQuicR
ctrl_message_types.h File Reference
#include "quicr/messages/uintvar.h"
#include "quicr/track_name.h"
#include <algorithm>
#include <limits>
#include <map>
#include <optional>
#include <source_location>
#include <stdexcept>
#include <string>
#include <tuple>
#include <variant>

Go to the source code of this file.

Classes

struct  quicr::messages::ProtocolViolationException
 Exception indicating that received or constructed data violates the MoQ protocol. More...
 
struct  quicr::messages::Location
 Absolute group/object location ordered lexicographically by group then object. More...
 
struct  quicr::messages::FetchEndLocation
 Inclusive terminal location for a fetch range. More...
 
struct  quicr::messages::KeyValuePair< T >
 
struct  quicr::messages::Token
 
struct  quicr::messages::SubscriptionFilter
 
struct  quicr::messages::TrackFilter
 Selects tracks by property, count, and timeout constraints. More...
 
class  quicr::messages::KeyValuePairs
 Draft 18 flat key-value pairs: a bounded, sorted KVP sequence without a leading count. More...
 
class  quicr::messages::TrackExtensions
 Mutable and immutable track-scoped extension maps. More...
 

Namespaces

 quicr
 
 quicr::messages
 

Typedefs

using quicr::messages::Filter = std::variant< std::monostate, SubscriptionFilter, TrackFilter >
 Any supported filter representation; monostate means no/unsupported filter. More...
 

Enumerations

enum class  quicr::messages::ControlMessageType : uint64_t {
  quicr::messages::kRequestUpdate = 0x2 , quicr::messages::kSubscribe = 0x3 , quicr::messages::kSubscribeOk = 0x4 , quicr::messages::kRequestError = 0x5 ,
  quicr::messages::kPublishNamespace = 0x6 , quicr::messages::kRequestOk = 0x7 , quicr::messages::kNamespace = 0x8 , quicr::messages::kPublishNamespaceDone = 0x9 ,
  quicr::messages::kUnsubscribe = 0xa , quicr::messages::kPublishDone = 0xb , quicr::messages::kPublishNamespaceCancel = 0xc , quicr::messages::kTrackStatus = 0xd ,
  quicr::messages::kNamespaceDone = 0xe , quicr::messages::kPublishBlocked = 0xf , quicr::messages::kGoaway = 0x10 , quicr::messages::kMaxRequestId = 0x15 ,
  quicr::messages::kFetch = 0x16 , quicr::messages::kFetchCancel = 0x17 , quicr::messages::kFetchOk = 0x18 , quicr::messages::kRequestsBlocked = 0x1a ,
  quicr::messages::kPublish = 0x1d , quicr::messages::kSubscribeNamespace = 0x50 , quicr::messages::kSubscribeTracks = 0x51 , quicr::messages::kSetup = 0x2F00
}
 MoQ control-message wire type codes. More...
 
enum class  quicr::messages::SetupOptionType : uint64_t {
  quicr::messages::kPath = 0x01 , quicr::messages::kAuthorizationToken = 0x03 , quicr::messages::kMaxAuthTokenCacheSize = 0x04 , quicr::messages::kAuthority = 0x05 ,
  quicr::messages::kMoqtImplementation = 0x07 , quicr::messages::kEndpointId = 0xF1 , quicr::messages::kInvalid = 0xFF
}
 SETUP option type codes. More...
 
enum class  quicr::messages::GroupOrder : uint8_t { quicr::messages::kAscending = 0x1 , quicr::messages::kDescending = 0x2 }
 Requested group traversal order. More...
 
enum class  quicr::messages::FilterType : uint64_t { quicr::messages::kNone , quicr::messages::kSubscriptionFilter , quicr::messages::kTrackFilter }
 In-memory filter discriminator. More...
 
enum class  quicr::messages::SubscriptionFilterType : std::uint64_t { quicr::messages::kNextGroupStart = 0x1 , quicr::messages::kLargestObject = 0x2 , quicr::messages::kAbsoluteStart = 0x3 , quicr::messages::kAbsoluteRange = 0x4 }
 Subscription-filter form. More...
 
enum class  quicr::messages::PublishDoneStatusCode : uint64_t {
  quicr::messages::kInternalError = 0x0 , quicr::messages::kUnauthorized = 0x1 , quicr::messages::kTrackEnded = 0x2 , quicr::messages::kSubscriptionEnded = 0x3 ,
  quicr::messages::kGoingAway = 0x4 , quicr::messages::kTooFarBehind = 0x5 , quicr::messages::kExpired = 0x6 , quicr::messages::kMalformedTrack = 0x12 ,
  quicr::messages::kUpdateFailed = 0x8 , quicr::messages::kExcessiveLoad = 0x9
}
 Publish-done status codes. More...
 
enum class  quicr::messages::FetchType : uint8_t { quicr::messages::kStandalone = 0x1 , quicr::messages::kRelativeJoiningFetch , quicr::messages::kAbsoluteJoiningFetch }
 FETCH request form. More...
 
enum class  quicr::messages::TerminationReason : uint64_t {
  quicr::messages::kNoError = 0x0 , quicr::messages::kInternalError = 0x1 , quicr::messages::kUnauthorized = 0x2 , quicr::messages::kProtocolViolation = 0x3 ,
  quicr::messages::kInvalidRequestId = 0x4 , quicr::messages::kDuplicateTrackAlias = 0x5 , quicr::messages::kKeyValueFormattingError = 0x6 , quicr::messages::kTooManyRequests = 0x7 ,
  quicr::messages::kInvalidPath = 0x8 , quicr::messages::kMalformedPath = 0x9 , quicr::messages::kGoawayTimeout = 0x10 , quicr::messages::kControlMessageTimeout = 0x11 ,
  quicr::messages::kDataStreamTimeout = 0x12 , quicr::messages::kAuthTokenCacheOverflow = 0x13 , quicr::messages::kDuplicateAuthTokenAlias = 0x14 , quicr::messages::kVersionNegotiationFailed = 0x15 ,
  quicr::messages::kMalformedAuthToken = 0x16 , quicr::messages::kUnknownAuthTokenAlias = 0x17 , quicr::messages::kExpiredAuthToken = 0x18 , quicr::messages::kInvalidAuthority = 0x19 ,
  quicr::messages::kMalformedAuthority = 0x1A
}
 Session termination reason codes. More...
 
enum class  quicr::messages::StreamResetError : uint64_t {
  quicr::messages::kInternalError = 0x0 , quicr::messages::kCancelled = 0x1 , quicr::messages::kDeliveryTimeout = 0x2 , quicr::messages::kSessionClosed = 0x3 ,
  quicr::messages::kUnknownObjectStatus = 0x4 , quicr::messages::kMalformedTrack = 0x12
}
 Data-stream reset error codes. More...
 
enum class  quicr::messages::ExtensionType : uint64_t {
  quicr::messages::kDeliveryTimeout = 0x02 , quicr::messages::kMaxCacheDuration = 0x04 , quicr::messages::kDefaultPublisherPriority = 0x0E , quicr::messages::kDefaultPublisherGroupOrder = 0x22 ,
  quicr::messages::kDynamicGroups = 0x30 , quicr::messages::kPriorGroupIdGap = 0x3C , quicr::messages::kPriorObjectIdGap = 0x3E , quicr::messages::kImmutable = 0x0B
}
 Known track/object extension type codes. More...
 

Functions

BytesSpan quicr::operator>> (BytesSpan buffer, TrackNamespace &msg)
 
Bytes & quicr::operator<< (Bytes &buffer, const TrackNamespace &msg)
 
Bytes & quicr::messages::operator<< (Bytes &buffer, const Bytes &bytes)
 
Bytes & quicr::messages::operator<< (Bytes &buffer, const BytesSpan &bytes)
 
BytesSpan quicr::messages::operator>> (BytesSpan buffer, Bytes &value)
 
Bytes & quicr::messages::operator<< (Bytes &buffer, std::uint64_t value)
 
BytesSpan quicr::messages::operator>> (BytesSpan buffer, std::uint64_t &value)
 
Bytes & quicr::messages::operator<< (Bytes &buffer, std::uint8_t value)
 
BytesSpan quicr::messages::operator>> (BytesSpan buffer, uint8_t &value)
 
Bytes & quicr::messages::operator<< (Bytes &buffer, std::uint16_t value)
 
BytesSpan quicr::messages::operator>> (BytesSpan buffer, std::uint16_t &value)
 
Bytes & quicr::messages::operator<< (Bytes &buffer, const UintVar &value)
 
Bytes & quicr::messages::operator<< (Bytes &buffer, const Location &location)
 
BytesSpan quicr::messages::operator>> (BytesSpan buffer, Location &location)
 
template<KeyType T>
Bytes & quicr::messages::operator<< (Bytes &buffer, const T value)
 
template<KeyType T>
BytesSpan quicr::messages::operator>> (BytesSpan buffer, T &value)
 
template<KeyType T>
void quicr::messages::SerializeKvp (Bytes &buffer, const KeyValuePair< T > &kvp, const T prev_type)
 
template<KeyType T>
void quicr::messages::ParseKvp (BytesSpan &buffer, KeyValuePair< T > &kvp, const T prev_type)
 
Bytes & quicr::messages::operator<< (Bytes &buffer, const Token &token)
 
BytesSpan quicr::messages::operator>> (BytesSpan buffer, Token &token)
 
Bytes & quicr::messages::operator<< (Bytes &buffer, GroupOrder value)
 
BytesSpan quicr::messages::operator>> (BytesSpan buffer, GroupOrder &value)
 
Bytes & quicr::messages::operator<< (Bytes &bytes, const SubscriptionFilter &filter)
 
BytesSpan quicr::messages::operator>> (BytesSpan bytes, SubscriptionFilter &filter)
 
Bytes & quicr::messages::operator<< (Bytes &bytes, const TrackFilter &filter)
 
BytesSpan quicr::messages::operator>> (BytesSpan bytes, TrackFilter &filter)
 
FilterType quicr::messages::GetFilterType (const Filter &filter)
 
Bytes & quicr::messages::operator<< (Bytes &bytes, const Filter &filter)
 
BytesSpan quicr::messages::operator>> (BytesSpan, Filter &)
 
Filter quicr::messages::DeserializeFilter (FilterType filter_type, BytesSpan bytes)
 
Bytes & quicr::messages::operator<< (Bytes &buffer, PublishDoneStatusCode value)
 
BytesSpan quicr::messages::operator>> (BytesSpan buffer, PublishDoneStatusCode &value)
 
Bytes & quicr::messages::operator<< (Bytes &buffer, FetchType value)
 
BytesSpan quicr::messages::operator>> (BytesSpan buffer, FetchType &value)
 
BytesSpan quicr::messages::operator>> (BytesSpan buffer, KeyValuePairs &msg)
 
Bytes & quicr::messages::operator<< (Bytes &buffer, const KeyValuePairs &msg)
 
BytesSpan quicr::messages::operator>> (BytesSpan buffer, TrackExtensions &msg)
 
Bytes & quicr::messages::operator<< (Bytes &buffer, const TrackExtensions &msg)
 

Variables

template<typename T >
concept quicr::messages::KeyType
 
template<class T >
concept quicr::messages::HasByteStreamOperators
 
template<class T >
concept quicr::messages::ByteParameter