📄 sdpcontents.hxx
字号:
class Adjustment { public: Adjustment(unsigned long time, int offset); Adjustment(const Adjustment& rhs); Adjustment& operator=(const Adjustment& rhs); unsigned long time; int offset; }; Timezones(); Timezones(const Timezones& rhs); Timezones& operator=(const Timezones& rhs); void parse(ParseBuffer& pb); std::ostream& encode(std::ostream&) const; void addAdjustment(const Adjustment& adjusment); const std::list<Adjustment>& getAdjustments() const {return mAdjustments; } private: std::list<Adjustment> mAdjustments; }; class Encryption { public: typedef enum {NoEncryption = 0, Prompt, Clear, Base64, UriKey} KeyType; Encryption(const KeyType& method, const Data& key); Encryption(const Encryption& rhs); Encryption& operator=(const Encryption& rhs); void parse(ParseBuffer& pb); std::ostream& encode(std::ostream&) const; const KeyType& getMethod() const {return mMethod;} const KeyType& method() const {return mMethod;} KeyType& method() {return mMethod;} const Data& getKey() const {return mKey;} const Data& key() const {return mKey;} Data& key() {return mKey;} Encryption(); private: KeyType mMethod; Data mKey; }; class Medium { public: Medium(); Medium(const Medium& rhs); Medium(const Data& name, unsigned long port, unsigned long multicast, const Data& protocol); Medium& operator=(const Medium& rhs); void parse(ParseBuffer& pb); std::ostream& encode(std::ostream&) const; void addFormat(const Data& format); void setConnection(const Connection& connection); void addConnection(const Connection& connection); void setBandwidth(const Bandwidth& bandwidth); void addBandwidth(const Bandwidth& bandwidth); void addAttribute(const Data& key, const Data& value = Data::Empty); const Data& name() const {return mName;} Data& name() {return mName;} int port() const {return mPort;} unsigned long& port() {return mPort;} void setPort(int port); int multicast() const {return mMulticast;} unsigned long& multicast() {return mMulticast;} const Data& protocol() const {return mProtocol;} Data& protocol() {return mProtocol;} // preferred codec/format interface const std::list<Codec>& codecs() const; std::list<Codec>& codecs(); void clearCodecs(); void addCodec(const Codec& codec); const std::list<Data>& getFormats() const {return mFormats;} const Data& information() const {return mInformation;} Data& information() {return mInformation;} const std::list<Bandwidth>& bandwidths() const {return mBandwidths;} std::list<Bandwidth>& bandwidths() {return mBandwidths;} // from session if empty const std::list<Connection> getConnections() const; // does not include session connections const std::list<Connection>& getMediumConnections() const {return mConnections;} std::list<Connection>& getMediumConnections() {return mConnections;} const Encryption& getEncryption() const {return mEncryption;} const Encryption& encryption() const {return mEncryption;} Encryption& encryption() {return mEncryption;} bool exists(const Data& key) const; const std::list<Data>& getValues(const Data& key) const; void clearAttribute(const Data& key); const Codec& findFirstMatchingCodecs(const std::list<Codec>& codecList, Codec* pMatchingCodec = 0) const; const Codec& findFirstMatchingCodecs(const Medium& medium, Codec* pMatchingCodec = 0) const; int findTelephoneEventPayloadType() const; private: void setSession(Session* session); Session* mSession; Data mName; unsigned long mPort; unsigned long mMulticast; Data mProtocol; mutable std::list<Data> mFormats; mutable std::list<Codec> mCodecs; Data mTransport; Data mInformation; std::list<Connection> mConnections; std::list<Bandwidth> mBandwidths; Encryption mEncryption; mutable AttributeHelper mAttributeHelper; mutable bool mRtpMapDone; typedef HashMap<int, Codec> RtpMap; mutable RtpMap mRtpMap; friend class Session; }; Session(int version, const Origin& origin, const Data& name); Session() : mVersion(0) {} Session(const Session& rhs); Session& operator=(const Session& rhs); void parse(ParseBuffer& pb); std::ostream& encode(std::ostream&) const; int version() const {return mVersion;} int& version() {return mVersion;} const Origin& origin() const {return mOrigin;} Origin& origin() {return mOrigin;} const Data& name() const {return mName;} Data& name() {return mName;} const Data& information() const {return mInformation;} Data& information() {return mInformation;} const Uri& uri() const {return mUri;} Uri& uri() {return mUri;} const std::list<Email>& getEmails() const {return mEmails;} const std::list<Phone>& getPhones() const {return mPhones;} const Connection& connection() const {return mConnection;} Connection& connection() {return mConnection;} // !dlb! optional? bool isConnection() const { return mConnection.mAddress != Data::Empty; } const std::list<Bandwidth>& bandwidths() const {return mBandwidths;} std::list<Bandwidth>& bandwidths() {return mBandwidths;} const std::list<Time>& getTimes() const {return mTimes;} std::list<Time>& getTimes() {return mTimes;} const Timezones& getTimezones() const {return mTimezones;} const Encryption& getEncryption() const {return mEncryption;} const Encryption& encryption() const {return mEncryption;} Encryption& encryption() {return mEncryption;} const std::list<Medium>& media() const {return mMedia;} std::list<Medium>& media() {return mMedia;} void addEmail(const Email& email); void addPhone(const Phone& phone); void addBandwidth(const Bandwidth& bandwidth); void addTime(const Time& t); void addMedium(const Medium& medium); void clearMedium() { mMedia.clear(); } void clearAttribute(const Data& key); void addAttribute(const Data& key, const Data& value = Data::Empty); bool exists(const Data& key) const; const std::list<Data>& getValues(const Data& key) const; private: int mVersion; Origin mOrigin; Data mName; std::list<Medium> mMedia; // applies to all Media where unspecified Data mInformation; Uri mUri; std::list<Email> mEmails; std::list<Phone> mPhones; Connection mConnection; std::list<Bandwidth> mBandwidths; std::list<Time> mTimes; Timezones mTimezones; Encryption mEncryption; AttributeHelper mAttributeHelper; friend class SdpContents; }; SdpContents(); SdpContents(HeaderFieldValue* hfv, const Mime& contentTypes); ~SdpContents(); // !nash! there is no need for overriding copy ctor as every members gets copied //SdpContents(const SdpContents& rhs); SdpContents& operator=(const SdpContents& rhs); virtual Contents* clone() const; virtual Data getBodyData() const; Session& session() {checkParsed(); return mSession;} const Session& session() const {checkParsed(); return mSession;} virtual std::ostream& encodeParsed(std::ostream& str) const; virtual void parse(ParseBuffer& pb); static const Mime& getStaticType() ; static bool init(); private: SdpContents(const Data& data, const Mime& contentTypes); Session mSession;};static bool invokeSdpContentsInit = SdpContents::init();typedef SdpContents::Session::Codec Codec;bool operator==(const SdpContents::Session::Codec& lhs, const SdpContents::Session::Codec& rhs);std::ostream& operator<<(std::ostream& str, const SdpContents::Session::Codec& codec);}#endif/* ==================================================================== * The Vovida Software License, Version 1.0 * * Copyright (c) 2000 Vovida Networks, Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this std::vector of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this std::vector of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The names "VOCAL", "Vovida Open Communication Application Library", * and "Vovida Open Communication Application Library (VOCAL)" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact vocal@vovida.org. * * 4. Products derived from this software may not be called "VOCAL", nor * may "VOCAL" appear in their name, without prior written * permission of Vovida Networks, Inc. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL VOVIDA * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * ==================================================================== * * This software consists of voluntary contributions made by Vovida * Networks, Inc. and many individuals on behalf of Vovida Networks, * Inc. For more information on Vovida Networks, Inc., please see * <http://www.vovida.org/>. * */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -