⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdpcontents.hxx

📁 这是国外的resip协议栈
💻 HXX
📖 第 1 页 / 共 2 页
字号:
#if !defined(RESIP_SDPCONTENTS_HXX)#define RESIP_SDPCONTENTS_HXX#include <vector>#include <list>#include <iosfwd>#include <memory>#include "resip/stack/Contents.hxx"#include "resip/stack/Uri.hxx"#include "rutil/Data.hxx"#include "rutil/HashMap.hxx"#include "rutil/HeapInstanceCounter.hxx"namespace resip{class SdpContents;class AttributeHelper{   public:      RESIP_HeapCount(AttributeHelper);      AttributeHelper();      AttributeHelper(const AttributeHelper& rhs);      AttributeHelper& operator=(const AttributeHelper& rhs);      bool exists(const Data& key) const;      const std::list<Data>& getValues(const Data& key) const;      std::ostream& encode(std::ostream& s) const;      void parse(ParseBuffer& pb);      void addAttribute(const Data& key, const Data& value = Data::Empty);      void clearAttribute(const Data& key);   private:      std::list<std::pair<Data, Data> > mAttributeList;  // used to ensure attribute ordering on encode      HashMap< Data, std::list<Data> > mAttributes;};class SdpContents : public Contents{   public:      RESIP_HeapCount(SdpContents);      typedef enum {IP4=1, IP6} AddrType;      static const SdpContents Empty;      class Session;      class Session      {         public:            class Medium;            class Codec            {               public:                  Codec() : mName(), mRate(0), mPayloadType(-1) {}                  Codec(const Data& name, unsigned long rate, const Data& parameters = Data::Empty, const Data& encodingParameters = Data::Empty);                  Codec(const Data& name, int payloadType, int rate=8000);                  Codec(const Codec& rhs);                  Codec& operator=(const Codec& codec);                  void parse(ParseBuffer& pb,                             const SdpContents::Session::Medium& medium,                             int payLoadType);                  const Data& getName() const;                  int getRate() const;                  int payloadType() const {return mPayloadType;}                  int& payloadType() {return mPayloadType;}                  const Data& parameters() const {return mParameters;}                  Data& parameters() {return mParameters;}                  const Data& encodingParameters() const {return mEncodingParameters;}                  Data& encodingParameters() {return mEncodingParameters;}                  static const Codec ULaw_8000;                  static const Codec ALaw_8000;                  static const Codec G729_8000;                  static const Codec G723_8000;                  static const Codec GSM_8000;                  static const Codec TelephoneEvent;                  static const Codec FrfDialedDigit;                  static const Codec CN;                  typedef HashMap<int, Codec> CodecMap;                  // "static" payload types as defined in RFC 3551.                  // Maps payload type (number) to Codec definition.                  static CodecMap& getStaticCodecs();                  friend bool operator==(const Codec&, const Codec&);               private:                  Data mName;                  unsigned long mRate;                  int mPayloadType;                  Data mParameters;  // Format parameters                  Data mEncodingParameters;                  static std::auto_ptr<CodecMap> sStaticCodecs;                  static bool sStaticCodecsCreated;                  friend std::ostream& operator<<(std::ostream&, const Codec&);            };            class Origin            {               public:                  Origin(const Data& user,                         const UInt64& sessionId,                         const UInt64& version,                         AddrType addr,                         const Data& address);                  Origin(const Origin& rhs);                  Origin& operator=(const Origin& rhs);                  void parse(ParseBuffer& pb);                  std::ostream& encode(std::ostream&) const;                  const UInt64& getSessionId() const {return mSessionId;}                  UInt64& getSessionId() { return mSessionId; }                  const UInt64& getVersion() const {return mVersion;}                  UInt64& getVersion() { return mVersion; }                  const Data& user() const {return mUser;}                  Data& user() {return mUser;}                  AddrType getAddressType() const {return mAddrType;}                  const Data& getAddress() const {return mAddress;}                  void setAddress(const Data& host, AddrType type = IP4);               private:                  Origin();                  Data mUser;                  UInt64 mSessionId;                  UInt64 mVersion;                  AddrType mAddrType;                  Data mAddress;                  friend class Session;            };            class Email            {               public:                  Email(const Data& address,                        const Data& freeText);                  Email(const Email& rhs);                  Email& operator=(const Email& rhs);                  void parse(ParseBuffer& pb);                  std::ostream& encode(std::ostream&) const;                  const Data& getAddress() const {return mAddress;}                  const Data& getFreeText() const {return mFreeText;}               private:                  Email() {}                  Data mAddress;                  Data mFreeText;                  friend class Session;            };            class Phone            {               public:                  Phone(const Data& number,                        const Data& freeText);                  Phone(const Phone& rhs);                  Phone& operator=(const Phone& rhs);                  void parse(ParseBuffer& pb);                  std::ostream& encode(std::ostream&) const;                  const Data& getNumber() const {return mNumber;}                  const Data& getFreeText() const {return mFreeText;}               private:                  Phone() {}                  Data mNumber;                  Data mFreeText;                  friend class Session;            };            class Connection            {               public:                  Connection(AddrType addType,                             const Data& address,                             unsigned long ttl = 0);                  Connection(const Connection& rhs);                  Connection& operator=(const Connection& rhs);                  void parse(ParseBuffer& pb);                  std::ostream& encode(std::ostream&) const;                  AddrType getAddressType() const {return mAddrType;}                  const Data& getAddress() const {return mAddress;}                  void setAddress(const Data& host, AddrType type = IP4);                  unsigned long ttl() const {return mTTL;}                  unsigned long& ttl() {return mTTL;}               private:                  Connection();                  AddrType mAddrType;                  Data mAddress;                  unsigned long mTTL;                  friend class Session;                  friend class Medium;            };            class Bandwidth            {               public:                  Bandwidth(const Data& modifier,                            unsigned long kbPerSecond);                  Bandwidth(const Bandwidth& rhs);                  Bandwidth& operator=(const Bandwidth& rhs);                  void parse(ParseBuffer& pb);                  std::ostream& encode(std::ostream&) const;                  const Data& modifier() const {return mModifier;}                  Data modifier() {return mModifier;}                  unsigned long kbPerSecond() const {return mKbPerSecond;}                  unsigned long& kbPerSecond() {return mKbPerSecond;}               private:                  Bandwidth() {}                  Data mModifier;                  unsigned long mKbPerSecond;                  friend class Session;                  friend class Medium;            };            class Time            {               public:                  Time(unsigned long start,                       unsigned long stop);                  Time(const Time& rhs);                  Time& operator=(const Time& rhs);                  void parse(ParseBuffer& pb);                  std::ostream& encode(std::ostream&) const;                  class Repeat                  {                     public:                        Repeat(unsigned long interval,                               unsigned long duration,                               std::list<int> offsets);                        void parse(ParseBuffer& pb);                        std::ostream& encode(std::ostream&) const;                        unsigned long getInterval() const {return mInterval;}                        unsigned long getDuration() const {return mDuration;}                        const std::list<int> getOffsets() const {return mOffsets;}                     private:                        Repeat() {}                        unsigned long mInterval;                        unsigned long mDuration;                        std::list<int> mOffsets;                        friend class Time;                  };                  void addRepeat(const Repeat& repeat);                  unsigned long getStart() const {return mStart;}                  unsigned long getStop() const {return mStop;}                  const std::list<Repeat>& getRepeats() const {return mRepeats;}               private:                  Time() {}                  unsigned long mStart;                  unsigned long mStop;                  std::list<Repeat> mRepeats;                  friend class Session;            };            class Timezones            {               public:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -