tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

SipccSdpMediaSection.h (3446B)


      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 _SIPCCSDPMEDIASECTION_H_
      8 #define _SIPCCSDPMEDIASECTION_H_
      9 
     10 #include <map>
     11 
     12 #include "mozilla/UniquePtr.h"
     13 #include "sdp/SdpMediaSection.h"
     14 #include "sdp/SipccSdpAttributeList.h"
     15 
     16 extern "C" {
     17 #include "sipcc_sdp.h"
     18 }
     19 
     20 namespace mozilla {
     21 
     22 class SipccSdp;
     23 class SdpParser;
     24 
     25 using InternalResults = SdpParser::InternalResults;
     26 
     27 class SipccSdpBandwidths final : public std::map<std::string, uint32_t> {
     28 public:
     29  bool Load(sdp_t* sdp, uint16_t level, InternalResults& results);
     30  void Serialize(std::ostream& os) const;
     31 };
     32 
     33 class SipccSdpMediaSection final : public SdpMediaSection {
     34  friend class SipccSdp;
     35 
     36 public:
     37  ~SipccSdpMediaSection() {}
     38 
     39  virtual MediaType GetMediaType() const override { return mMediaType; }
     40 
     41  virtual unsigned int GetPort() const override;
     42  virtual void SetPort(unsigned int port) override;
     43  virtual unsigned int GetPortCount() const override;
     44  virtual Protocol GetProtocol() const override;
     45  virtual const SdpConnection& GetConnection() const override;
     46  virtual SdpConnection& GetConnection() override;
     47  virtual uint32_t GetBandwidth(const std::string& type) const override;
     48  virtual const std::vector<std::string>& GetFormats() const override;
     49 
     50  virtual const SdpAttributeList& GetAttributeList() const override;
     51  virtual SdpAttributeList& GetAttributeList() override;
     52  virtual SdpDirectionAttribute GetDirectionAttribute() const override;
     53 
     54  virtual void AddCodec(const std::string& pt, const std::string& name,
     55                        uint32_t clockrate, uint16_t channels) override;
     56  virtual void ClearCodecs() override;
     57 
     58  virtual void AddDataChannel(const std::string& name, uint16_t port,
     59                              uint16_t streams, uint32_t message_size) override;
     60 
     61  virtual void Serialize(std::ostream&) const override;
     62 
     63 private:
     64  SipccSdpMediaSection(size_t level, const SipccSdpAttributeList* sessionLevel)
     65      : SdpMediaSection(level),
     66        mMediaType(static_cast<MediaType>(0)),
     67        mPort(0),
     68        mPortCount(0),
     69        mProtocol(static_cast<Protocol>(0)),
     70        mAttributeList(sessionLevel) {}
     71 
     72  SipccSdpMediaSection(const SipccSdpMediaSection& aOrig,
     73                       const SipccSdpAttributeList* sessionLevel);
     74 
     75  bool Load(sdp_t* sdp, uint16_t level, InternalResults& results);
     76  bool LoadConnection(sdp_t* sdp, uint16_t level, InternalResults& results);
     77  bool LoadProtocol(sdp_t* sdp, uint16_t level, InternalResults& results);
     78  bool LoadFormats(sdp_t* sdp, uint16_t level, InternalResults& results);
     79  bool ValidateSimulcast(sdp_t* sdp, uint16_t level,
     80                         InternalResults& results) const;
     81  bool ValidateSimulcastVersions(
     82      sdp_t* sdp, uint16_t level,
     83      const SdpSimulcastAttribute::Versions& versions, sdp::Direction direction,
     84      InternalResults& results) const;
     85 
     86  // the following values are cached on first get
     87  MediaType mMediaType;
     88  uint16_t mPort;
     89  uint16_t mPortCount;
     90  Protocol mProtocol;
     91  std::vector<std::string> mFormats;
     92 
     93  UniquePtr<SdpConnection> mConnection;
     94  SipccSdpBandwidths mBandwidths;
     95 
     96  SipccSdpAttributeList mAttributeList;
     97 };
     98 }  // namespace mozilla
     99 
    100 #endif