@@ -353,30 +353,6 @@ KeyValuePairList MessageParameters::ToKeyValuePairList() const {
353353 return list;
354354}
355355
356- KeyValuePairList VersionSpecificParameters::ToKeyValuePairList () const {
357- KeyValuePairList out;
358- if (delivery_timeout != quic::QuicTimeDelta::Infinite ()) {
359- out.insert (
360- static_cast <uint64_t >(VersionSpecificParameter::kDeliveryTimeout ),
361- static_cast <uint64_t >(delivery_timeout.ToMilliseconds ()));
362- }
363- for (const AuthToken& token : authorization_tokens) {
364- out.insert (
365- static_cast <uint64_t >(VersionSpecificParameter::kAuthorizationToken ),
366- SerializeAuthToken (token).AsStringView ());
367- }
368- if (max_cache_duration != quic::QuicTimeDelta::Infinite ()) {
369- out.insert (
370- static_cast <uint64_t >(VersionSpecificParameter::kMaxCacheDuration ),
371- static_cast <uint64_t >(max_cache_duration.ToMilliseconds ()));
372- }
373- if (oack_window_size.has_value ()) {
374- out.insert (static_cast <uint64_t >(VersionSpecificParameter::kOackWindowSize ),
375- static_cast <uint64_t >(oack_window_size->ToMicroseconds ()));
376- }
377- return out;
378- }
379-
380356quiche::QuicheBuffer MoqtFramer::SerializeObjectHeader (
381357 const MoqtObject& message, MoqtDataStreamType message_type,
382358 std::optional<uint64_t > previous_object_in_stream) {
@@ -649,18 +625,11 @@ quiche::QuicheBuffer MoqtFramer::SerializeFetch(const MoqtFetch& message) {
649625 return quiche::QuicheBuffer ();
650626 }
651627 }
652- KeyValuePairList parameters;
653- if (!FillAndValidateVersionSpecificParameters (
654- MoqtMessageType::kFetch , message.parameters , parameters)) {
655- return quiche::QuicheBuffer ();
656- };
657628 if (std::holds_alternative<StandaloneFetch>(message.fetch )) {
658629 const StandaloneFetch& standalone_fetch =
659630 std::get<StandaloneFetch>(message.fetch );
660631 return SerializeControlMessage (
661632 MoqtMessageType::kFetch , WireVarInt62 (message.request_id ),
662- WireUint8 (message.subscriber_priority ),
663- WireDeliveryOrder (message.group_order ),
664633 WireVarInt62 (FetchType::kStandalone ),
665634 WireFullTrackName (standalone_fetch.full_track_name ),
666635 WireVarInt62 (standalone_fetch.start_location .group ),
@@ -669,7 +638,7 @@ quiche::QuicheBuffer MoqtFramer::SerializeFetch(const MoqtFetch& message) {
669638 WireVarInt62 (standalone_fetch.end_location .object == kMaxObjectId
670639 ? 0
671640 : standalone_fetch.end_location .object + 1 ),
672- WireKeyValuePairList (parameters));
641+ WireKeyValuePairList (message. parameters . ToKeyValuePairList () ));
673642 }
674643 uint64_t request_id, joining_start;
675644 if (std::holds_alternative<JoiningFetchRelative>(message.fetch )) {
@@ -685,26 +654,21 @@ quiche::QuicheBuffer MoqtFramer::SerializeFetch(const MoqtFetch& message) {
685654 }
686655 return SerializeControlMessage (
687656 MoqtMessageType::kFetch , WireVarInt62 (message.request_id ),
688- WireUint8 (message.subscriber_priority ),
689- WireDeliveryOrder (message.group_order ),
690657 WireVarInt62 (message.fetch .index () + 1 ), WireVarInt62 (request_id),
691- WireVarInt62 (joining_start), WireKeyValuePairList (parameters));
658+ WireVarInt62 (joining_start),
659+ WireKeyValuePairList (message.parameters .ToKeyValuePairList ()));
692660}
693661
694662quiche::QuicheBuffer MoqtFramer::SerializeFetchOk (const MoqtFetchOk& message) {
695- KeyValuePairList parameters;
696- if (!FillAndValidateVersionSpecificParameters (
697- MoqtMessageType::kFetchOk , message.parameters , parameters)) {
698- return quiche::QuicheBuffer ();
699- };
700663 return SerializeControlMessage (
701664 MoqtMessageType::kFetchOk , WireVarInt62 (message.request_id ),
702- WireDeliveryOrder (message. group_order ), WireBoolean (message.end_of_track ),
665+ WireBoolean (message.end_of_track ),
703666 WireVarInt62 (message.end_location .group ),
704667 WireVarInt62 (message.end_location .object == kMaxObjectId
705668 ? 0
706669 : (message.end_location .object + 1 )),
707- WireKeyValuePairList (parameters));
670+ WireKeyValuePairList (message.parameters .ToKeyValuePairList ()),
671+ WireKeyValuePairList (message.extensions , false ));
708672}
709673
710674quiche::QuicheBuffer MoqtFramer::SerializeFetchCancel (
@@ -720,73 +684,19 @@ quiche::QuicheBuffer MoqtFramer::SerializeRequestsBlocked(
720684}
721685
722686quiche::QuicheBuffer MoqtFramer::SerializePublish (const MoqtPublish& message) {
723- KeyValuePairList parameters;
724- if (!FillAndValidateVersionSpecificParameters (
725- MoqtMessageType::kPublish , message.parameters , parameters)) {
726- return quiche::QuicheBuffer ();
727- };
728- std::optional<uint64_t > group, object;
729- if (message.largest_location .has_value ()) {
730- group = message.largest_location ->group ;
731- object = message.largest_location ->object ;
732- }
733687 return SerializeControlMessage (
734688 MoqtMessageType::kPublish , WireVarInt62 (message.request_id ),
735689 WireFullTrackName (message.full_track_name ),
736- WireVarInt62 (message.track_alias ), WireDeliveryOrder (message.group_order ),
737- WireBoolean (message.largest_location .has_value ()),
738- WireOptional<WireVarInt62>(group), WireOptional<WireVarInt62>(object),
739- WireBoolean (message.forward ), WireKeyValuePairList (parameters));
690+ WireVarInt62 (message.track_alias ),
691+ WireKeyValuePairList (message.parameters .ToKeyValuePairList ()),
692+ WireKeyValuePairList (message.extensions , false ));
740693}
741694
742695quiche::QuicheBuffer MoqtFramer::SerializePublishOk (
743696 const MoqtPublishOk& message) {
744- KeyValuePairList parameters;
745- if (!FillAndValidateVersionSpecificParameters (
746- MoqtMessageType::kPublishOk , message.parameters , parameters)) {
747- return quiche::QuicheBuffer ();
748- };
749- std::optional<uint64_t > start_group, start_object, end_group;
750- switch (message.filter_type ) {
751- case MoqtFilterType::kNextGroupStart :
752- case MoqtFilterType::kLargestObject :
753- break ;
754- case MoqtFilterType::kAbsoluteStart :
755- case MoqtFilterType::kAbsoluteRange :
756- if (!message.start .has_value ()) {
757- QUICHE_BUG (QUICHE_BUG_invalid_filter_type)
758- << " Serializing invalid MoQT filter type" ;
759- return quiche::QuicheBuffer ();
760- }
761- start_group = message.start ->group ;
762- start_object = message.start ->object ;
763- if (message.filter_type == MoqtFilterType::kAbsoluteStart ) {
764- break ;
765- }
766- if (!message.end_group .has_value ()) {
767- QUICHE_BUG (QUICHE_BUG_invalid_filter_type)
768- << " Serializing invalid MoQT filter type" ;
769- return quiche::QuicheBuffer ();
770- }
771- end_group = message.end_group ;
772- if (*end_group < *start_group) {
773- QUICHE_BUG (QUICHE_BUG_invalid_filter_type)
774- << " End group is less than start group" ;
775- return quiche::QuicheBuffer ();
776- }
777- break ;
778- default :
779- QUICHE_BUG (QUICHE_BUG_invalid_filter_type)
780- << " Serializing invalid MoQT filter type" ;
781- return quiche::QuicheBuffer ();
782- }
783697 return SerializeControlMessage (
784698 MoqtMessageType::kPublishOk , WireVarInt62 (message.request_id ),
785- WireBoolean (message.forward ), WireUint8 (message.subscriber_priority ),
786- WireDeliveryOrder (message.group_order ), WireVarInt62 (message.filter_type ),
787- WireOptional<WireVarInt62>(start_group),
788- WireOptional<WireVarInt62>(start_object),
789- WireOptional<WireVarInt62>(end_group), WireKeyValuePairList (parameters));
699+ WireKeyValuePairList (message.parameters .ToKeyValuePairList ()));
790700}
791701
792702quiche::QuicheBuffer MoqtFramer::SerializeObjectAck (
@@ -812,18 +722,6 @@ bool MoqtFramer::FillAndValidateSetupParameters(
812722 return true ;
813723}
814724
815- bool MoqtFramer::FillAndValidateVersionSpecificParameters (
816- MoqtMessageType message_type, const VersionSpecificParameters& parameters,
817- KeyValuePairList& out) {
818- if (!VersionSpecificParametersAllowedByMessage (parameters, message_type)) {
819- QUICHE_BUG (QUICHE_BUG_invalid_parameters)
820- << " Invalid parameters for " << MoqtMessageTypeToString (message_type);
821- return false ;
822- }
823- out = parameters.ToKeyValuePairList ();
824- return true ;
825- }
826-
827725// static
828726bool MoqtFramer::ValidateObjectMetadata (const MoqtObject& object,
829727 bool is_datagram) {
0 commit comments