sipXtapi home page


SdpCandidate.h
Go to the documentation of this file.
1 //
2 // Copyright (C) 2007-2012 SIPez LLC.
3 //
4 // Copyright (C) 2007 Plantronics
5 // Licensed to SIPfoundry under a Contributor Agreement.
6 //
7 // Copyright (C) 2007 SIPfoundry Inc.
8 // Licensed by SIPfoundry under the LGPL license.
9 //
10 // $$
12 // Author: Scott Godin (sgodin AT SipSpectrum DOT com)
13 
14 #ifndef _SdpCandidate_h_
15 #define _SdpCandidate_h_
16 
17 // SYSTEM INCLUDES
18 // APPLICATION INCLUDES
19 #include "utl/UtlInt.h"
20 #include "utl/UtlString.h"
21 #include "utl/UtlCopyableSList.h"
22 
23 // DEFINES
24 // MACROS
25 // EXTERNAL FUNCTIONS
26 // EXTERNAL VARIABLES
27 // CONSTANTS
28 // STRUCTS
29 // TYPEDEFS
30 // FORWARD DECLARATIONS
31 
32 //: Container for SdpCandidate specification
33 // This class holds the information related to an SdpCandidate.
34 // Included in this information is: TODO
35 //
36 
37 class SdpCandidate : public UtlCopyableContainable
38 {
39 /* //////////////////////////// PUBLIC //////////////////////////////////// */
40 public:
41 
42  typedef enum
43  {
45  CANDIDATE_TRANSPORT_TYPE_UDP, // "udp" - draft-ietf-mmusic-ice-12
46  CANDIDATE_TRANSPORT_TYPE_TCP_SO, // "tcp-so" - TCP simultaneous-open - draft-ietf-mmusic-ice-tcp-02
47  CANDIDATE_TRANSPORT_TYPE_TCP_ACT, // "tcp-act" - TCP active - draft-ietf-mmusic-ice-tcp-02
48  CANDIDATE_TRANSPORT_TYPE_TCP_PASS, // "tcp-pass" - TCP passive - draft-ietf-mmusic-ice-tcp-02
49  CANDIDATE_TRANSPORT_TYPE_TLS_SO, // "tls-so" - TCP simultaneous-open - draft-ietf-mmusic-ice-tcp-02
50  CANDIDATE_TRANSPORT_TYPE_TLS_ACT, // "tls-act" - TCP active - draft-ietf-mmusic-ice-tcp-02
51  CANDIDATE_TRANSPORT_TYPE_TLS_PASS // "tls-pass" - TCP passive - draft-ietf-mmusic-ice-tcp-02
53  static const char* SdpCandidateTransportTypeString[];
54 
55 
56  typedef enum
57  {
59  CANDIDATE_TYPE_HOST, // "host" - draft-ietf-mmusic-ice-12
60  CANDIDATE_TYPE_SRFLX, // "srflx" - server reflexive - draft-ietf-mmusic-ice-12
61  CANDIDATE_TYPE_PRFLX, // "prflx" - peer reflexive - draft-ietf-mmusic-ice-12
62  CANDIDATE_TYPE_RELAY, // "relay" - draft-ietf-mmusic-ice-12
64  static const char* SdpCandidateTypeString[];
65 
66  class SdpCandidateExtensionAttribute : public UtlCopyableContainable
67  {
68  public:
69  SdpCandidateExtensionAttribute(const char * name, const char * value) : mName(name), mValue(value) {}
71 
72  // Containable requirements
73  UtlContainableType getContainableType() const { static char type[] = "SdpCrypto"; return type;}
74  unsigned hash() const { return directHash(); }
75  int compareTo(UtlContainable const *) const { return 0; } // not implemented
76  UtlCopyableContainable* clone() const { return new SdpCandidateExtensionAttribute(*this); }
77 
78  // Accessors
79  void setName(const char * name) { mName = name; }
80  const UtlString& getName() const { return mName; }
81 
82  void setValue(const char * value) { mValue = value; }
83  const UtlString& getValue() const { return mValue; }
84 
85  private:
86  UtlString mName;
87  UtlString mValue;
88  };
89 
90 
91 /* ============================ CREATORS ================================== */
92 
93 
94  SdpCandidate(const char * foundation = 0,
95  unsigned int id = 0,
96  SdpCandidateTransportType transport = CANDIDATE_TRANSPORT_TYPE_NONE,
97  uint64_t priority = 0,
98  const char * connectionAddress = 0,
99  unsigned int port = 0,
100  SdpCandidateType candidateType = CANDIDATE_TYPE_NONE,
101  const char * relatedAddress = 0,
102  unsigned int relatedPort = 0,
103  bool inUse = false);
104  //:Default constructor
105 
106  SdpCandidate(const SdpCandidate& rSdpCandidate);
107  //:Copy constructor
108 
109  virtual ~SdpCandidate();
110  //:Destructor
111 
112 /* ============================ MANIPULATORS ============================== */
113 
114  SdpCandidate& operator=(const SdpCandidate& rhs);
115  //:Assignment operator
116 
117  void setFoundation(const char * foundation) { mFoundation = foundation; }
118  void setId(unsigned int id) { mId = id; }
119  void setTransport(SdpCandidateTransportType transport) { mTransport = transport; }
120  void setPriority(uint64_t priority) { mPriority = priority; }
121  void setConnectionAddress(const char * connectionAddress) { mConnectionAddress = connectionAddress; }
122  void setPort(unsigned int port) { mPort = port; }
123  void setCandidateType(SdpCandidateType candidateType) { mCandidateType = candidateType; }
124  void setRelatedAddress(const char * relatedAddress) { mRelatedAddress = relatedAddress; }
125  void setRelatedPort(unsigned int relatedPort) { mRelatedPort = relatedPort; }
126 
127  void addExtensionAttribute(const char * name, const char * value) { addExtensionAttribute(new SdpCandidateExtensionAttribute(name, value)); }
128  void addExtensionAttribute(SdpCandidateExtensionAttribute* sdpCandidateExtensionAttribute) { mExtensionAttributes.insert(sdpCandidateExtensionAttribute); }
130 
131  void setInUse(bool inUse) { mInUse = inUse; }
132 
133 /* ============================ ACCESSORS ================================= */
134 
135  // UtlContainable requirements
136  virtual UtlContainableType getContainableType() const;
137  virtual unsigned hash() const;
138  virtual int compareTo(UtlContainable const *) const;
139  static const UtlContainableType TYPE;
140  UtlCopyableContainable* clone() const { return new SdpCandidate(*this); }
141 
142  void toString(UtlString& sdpCandidateString) const;
143 
144 /* ============================ INQUIRY =================================== */
145 
146  virtual UtlBoolean isInstanceOf(const UtlContainableType type) const;
147  const UtlString& getFoundation() const { return mFoundation; }
148  unsigned int getId() const { return mId; }
149  SdpCandidateTransportType getTransport() const { return mTransport; }
150  static SdpCandidateTransportType getCandidateTransportTypeFromString(const char * type);
151  uint64_t getPriority() const { return mPriority; }
152  const UtlString& getConnectionAddress() const { return mConnectionAddress; }
153  unsigned int getPort() const { return mPort; }
154  SdpCandidateType getCandidateType() const { return mCandidateType; }
155  static SdpCandidateType getCandidateTypeFromString(const char * type);
156  const UtlString& getRelatedAddress() const { return mRelatedAddress; }
157  unsigned int getRelatedPort() const { return mRelatedPort; }
158  const UtlCopyableSList& getExtensionAttributes() const { return mExtensionAttributes; }
159  bool isInUse() const { return mInUse; }
160 
161 /* //////////////////////////// PROTECTED ///////////////////////////////// */
162 protected:
163 
164 /* //////////////////////////// PRIVATE /////////////////////////////////// */
165 private:
166  int compareNumber(uint64_t first, uint64_t second, bool reverse = false) const;
167 
168  UtlString mFoundation;
169  unsigned int mId;
170  SdpCandidateTransportType mTransport;
171  uint64_t mPriority;
173  unsigned int mPort;
174  SdpCandidateType mCandidateType;
175  UtlString mRelatedAddress;
176  unsigned int mRelatedPort;
177  UtlCopyableSList mExtensionAttributes;
178 
179  bool mInUse;
180 };
181 
182 /* ============================ INLINE METHODS ============================ */
183 
184 #endif // _SdpCandidate_h_
void setConnectionAddress(const char *connectionAddress)
Definition: SdpCandidate.h:121
void setFoundation(const char *foundation)
Definition: SdpCandidate.h:117
UtlString mRelatedAddress
Definition: SdpCandidate.h:175
unsigned int getPort() const
Definition: SdpCandidate.h:153
UtlContainableType getContainableType() const
Definition: SdpCandidate.h:73
static const UtlContainableType TYPE
Class type used for runtime checking.
Definition: SdpCandidate.h:139
UtlCopyableSList mExtensionAttributes
Definition: SdpCandidate.h:177
void setInUse(bool inUse)
Definition: SdpCandidate.h:131
void setName(const char *name)
Definition: SdpCandidate.h:79
int compareNumber(uint64_t first, uint64_t second, bool reverse=false) const
Definition: SdpCandidate.cpp:289
void setRelatedAddress(const char *relatedAddress)
Definition: SdpCandidate.h:124
void addExtensionAttribute(const char *name, const char *value)
Definition: SdpCandidate.h:127
Definition: SdpCandidate.h:58
SdpCandidateTransportType
Definition: SdpCandidate.h:42
static SdpCandidateType getCandidateTypeFromString(const char *type)
Definition: SdpCandidate.cpp:259
unsigned int mId
Definition: SdpCandidate.h:169
SdpCandidate(const char *foundation=0, unsigned int id=0, SdpCandidateTransportType transport=CANDIDATE_TRANSPORT_TYPE_NONE, uint64_t priority=0, const char *connectionAddress=0, unsigned int port=0, SdpCandidateType candidateType=CANDIDATE_TYPE_NONE, const char *relatedAddress=0, unsigned int relatedPort=0, bool inUse=false)
Definition: SdpCandidate.cpp:56
SdpCandidateTransportType getTransport() const
Definition: SdpCandidate.h:149
UtlString mValue
Definition: SdpCandidate.h:87
void setPriority(uint64_t priority)
Definition: SdpCandidate.h:120
void setCandidateType(SdpCandidateType candidateType)
Definition: SdpCandidate.h:123
int compareTo(UtlContainable const *) const
Definition: SdpCandidate.h:75
virtual ~SdpCandidate()
Definition: SdpCandidate.cpp:86
unsigned int mRelatedPort
Definition: SdpCandidate.h:176
UtlString mFoundation
Definition: SdpCandidate.h:168
Definition: SdpCandidate.h:61
Definition: SdpCandidate.h:44
static const char * SdpCandidateTypeString[]
Definition: SdpCandidate.h:64
Definition: SdpCandidate.h:37
SdpCandidateType
Definition: SdpCandidate.h:56
unsigned int mPort
Definition: SdpCandidate.h:173
UtlCopyableContainable * clone() const
Definition: SdpCandidate.h:140
static SdpCandidateTransportType getCandidateTransportTypeFromString(const char *type)
Definition: SdpCandidate.cpp:220
void setRelatedPort(unsigned int relatedPort)
Definition: SdpCandidate.h:125
void addExtensionAttribute(SdpCandidateExtensionAttribute *sdpCandidateExtensionAttribute)
Definition: SdpCandidate.h:128
const UtlString & getConnectionAddress() const
Definition: SdpCandidate.h:152
void setTransport(SdpCandidateTransportType transport)
Definition: SdpCandidate.h:119
Definition: SdpCandidate.h:62
UtlCopyableContainable * clone() const
Definition: SdpCandidate.h:76
uint64_t mPriority
Definition: SdpCandidate.h:171
virtual UtlBoolean isInstanceOf(const UtlContainableType type) const
Definition: SdpCandidate.cpp:212
static const char * SdpCandidateTransportTypeString[]
Definition: SdpCandidate.h:53
void setId(unsigned int id)
Definition: SdpCandidate.h:118
const UtlString & getRelatedAddress() const
Definition: SdpCandidate.h:156
Definition: SdpCandidate.h:45
const UtlString & getValue() const
Definition: SdpCandidate.h:83
UtlString mName
Definition: SdpCandidate.h:86
void toString(UtlString &sdpCandidateString) const
Definition: SdpCandidate.cpp:179
bool isInUse() const
Definition: SdpCandidate.h:159
unsigned int getRelatedPort() const
Definition: SdpCandidate.h:157
unsigned int getId() const
Definition: SdpCandidate.h:148
void clearExtensionAttributes()
Definition: SdpCandidate.h:129
SdpCandidate & operator=(const SdpCandidate &rhs)
Definition: SdpCandidate.cpp:93
SdpCandidateTransportType mTransport
Definition: SdpCandidate.h:170
SdpCandidateType getCandidateType() const
Definition: SdpCandidate.h:154
unsigned hash() const
Definition: SdpCandidate.h:74
Definition: SdpCandidate.h:59
Definition: SdpCandidate.h:60
uint64_t getPriority() const
Definition: SdpCandidate.h:151
void setPort(unsigned int port)
Definition: SdpCandidate.h:122
const UtlString & getFoundation() const
Definition: SdpCandidate.h:147
SdpCandidateType mCandidateType
Definition: SdpCandidate.h:174
void setValue(const char *value)
Definition: SdpCandidate.h:82
bool mInUse
Definition: SdpCandidate.h:179
SdpCandidateExtensionAttribute(const SdpCandidateExtensionAttribute &rhs)
Definition: SdpCandidate.h:70
SdpCandidateExtensionAttribute(const char *name, const char *value)
Definition: SdpCandidate.h:69
const UtlCopyableSList & getExtensionAttributes() const
Definition: SdpCandidate.h:158
const UtlString & getName() const
Definition: SdpCandidate.h:80
UtlString mConnectionAddress
Definition: SdpCandidate.h:172