RsdparsaSdp.h (2188B)
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim: set ts=2 et sw=2 tw=80: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this file, 5 * You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #ifndef _RSDPARSA_SDP_H_ 8 #define _RSDPARSA_SDP_H_ 9 10 #include "mozilla/UniquePtr.h" 11 #include "sdp/RsdparsaSdpAttributeList.h" 12 #include "sdp/RsdparsaSdpGlue.h" 13 #include "sdp/RsdparsaSdpInc.h" 14 #include "sdp/RsdparsaSdpMediaSection.h" 15 #include "sdp/Sdp.h" 16 17 namespace mozilla { 18 19 class RsdparsaSdpParser; 20 class SdpParser; 21 22 class RsdparsaSdp final : public Sdp { 23 friend class RsdparsaSdpParser; 24 25 public: 26 explicit RsdparsaSdp(RsdparsaSessionHandle session, const SdpOrigin& origin); 27 28 Sdp* Clone() const override; 29 30 const SdpOrigin& GetOrigin() const override; 31 32 // Note: connection information is always retrieved from media sections 33 uint32_t GetBandwidth(const std::string& type) const override; 34 35 size_t GetMediaSectionCount() const override { 36 return sdp_media_section_count(mSession.get()); 37 } 38 39 const SdpAttributeList& GetAttributeList() const override { 40 return *mAttributeList; 41 } 42 43 SdpAttributeList& GetAttributeList() override { return *mAttributeList; } 44 45 const SdpMediaSection& GetMediaSection(size_t level) const override; 46 47 SdpMediaSection& GetMediaSection(size_t level) override; 48 49 SdpMediaSection& AddMediaSection(SdpMediaSection::MediaType media, 50 SdpDirectionAttribute::Direction dir, 51 uint16_t port, 52 SdpMediaSection::Protocol proto, 53 sdp::AddrType addrType, 54 const std::string& addr) override; 55 56 void Serialize(std::ostream&) const override; 57 58 private: 59 RsdparsaSdp() : mOrigin("", 0, 0, sdp::kIPv4, "") {} 60 RsdparsaSdp(const RsdparsaSdp& aOrig); 61 62 RsdparsaSessionHandle mSession; 63 SdpOrigin mOrigin; 64 UniquePtr<RsdparsaSdpAttributeList> mAttributeList; 65 std::vector<UniquePtr<RsdparsaSdpMediaSection>> mMediaSections; 66 }; 67 68 } // namespace mozilla 69 70 #endif