/* * Copyright 2021 The WebRTC Project Authors. All rights reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #ifndef PC_BUNDLE_MANAGER_H_ #define PC_BUNDLE_MANAGER_H_ #include #include #include #include "pc/session_description.h" namespace webrtc { // This class manages information about RFC 8843 BUNDLE bundles // in SDP descriptions. // This is a work-in-progress. Planned steps: // 1) Move all Bundle-related data structures from JsepTransport // into this class. // 2) Move all Bundle-related functions into this class. // 3) Move remaining Bundle-related logic into this class. // Make data members private. // 4) Refine interface to have comprehensible semantics. // 5) Add unit tests. // 6) Change the logic to do what's right. class BundleManager { public: const std::vector>& bundle_groups() const { return bundle_groups_; } // Update the groups description. This completely replaces the group // description with the one from the SessionDescription. void Update(const cricket::SessionDescription* description); // Delete a MID from the group that contains it. void DeleteMid(const cricket::ContentGroup* bundle_group, const std::string& mid); // Delete a group. void DeleteGroup(const cricket::ContentGroup* bundle_group); private: std::vector> bundle_groups_; }; } // namespace webrtc #endif // PC_BUNDLE_MANAGER_H_