• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * libjingle
3  * Copyright 2004--2005, Google Inc.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  *  1. Redistributions of source code must retain the above copyright notice,
9  *     this list of conditions and the following disclaimer.
10  *  2. Redistributions in binary form must reproduce the above copyright notice,
11  *     this list of conditions and the following disclaimer in the documentation
12  *     and/or other materials provided with the distribution.
13  *  3. The name of the author may not be used to endorse or promote products
14  *     derived from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
17  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
19  * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
22  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
23  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
24  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
25  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27 
28 #include <string>
29 
30 #include "talk/p2p/base/constants.h"
31 #include "talk/xmllite/qname.h"
32 
33 namespace cricket {
34 
35 const std::string NS_EMPTY("");
36 const std::string NS_JINGLE("urn:xmpp:jingle:1");
37 const std::string NS_GINGLE("http://www.google.com/session");
38 
39 // actions (aka <session> or <jingle>)
40 const buzz::QName QN_ACTION(true, NS_EMPTY, "action");
41 const std::string LN_INITIATOR("initiator");
42 const buzz::QName QN_INITIATOR(true, NS_EMPTY, LN_INITIATOR);
43 const buzz::QName QN_CREATOR(true, NS_EMPTY, "creator");
44 
45 const buzz::QName QN_JINGLE(true, NS_JINGLE, "jingle");
46 const buzz::QName QN_JINGLE_CONTENT(true, NS_JINGLE, "content");
47 const buzz::QName QN_JINGLE_CONTENT_NAME(true, NS_EMPTY, "name");
48 const buzz::QName QN_JINGLE_CONTENT_MEDIA(true, NS_EMPTY, "media");
49 const buzz::QName QN_JINGLE_REASON(true, NS_JINGLE, "reason");
50 const std::string JINGLE_CONTENT_MEDIA_AUDIO("audio");
51 const std::string JINGLE_CONTENT_MEDIA_VIDEO("video");
52 const std::string JINGLE_ACTION_SESSION_INITIATE("session-initiate");
53 const std::string JINGLE_ACTION_SESSION_INFO("session-info");
54 const std::string JINGLE_ACTION_SESSION_ACCEPT("session-accept");
55 const std::string JINGLE_ACTION_SESSION_TERMINATE("session-terminate");
56 const std::string JINGLE_ACTION_TRANSPORT_INFO("transport-info");
57 const std::string JINGLE_ACTION_TRANSPORT_ACCEPT("transport-accept");
58 
59 const buzz::QName QN_GINGLE_SESSION(true, NS_GINGLE, "session");
60 const std::string GINGLE_ACTION_INITIATE("initiate");
61 const std::string GINGLE_ACTION_INFO("info");
62 const std::string GINGLE_ACTION_ACCEPT("accept");
63 const std::string GINGLE_ACTION_REJECT("reject");
64 const std::string GINGLE_ACTION_TERMINATE("terminate");
65 const std::string GINGLE_ACTION_CANDIDATES("candidates");
66 const std::string GINGLE_ACTION_NOTIFY("notify");
67 const std::string GINGLE_ACTION_UPDATE("update");
68 const std::string GINGLE_ACTION_VIEW("view");
69 
70 const std::string LN_ERROR("error");
71 const buzz::QName QN_GINGLE_REDIRECT(true, NS_GINGLE, "redirect");
72 const std::string STR_REDIRECT_PREFIX("xmpp:");
73 
74 // Session Contents (aka Gingle <session><description>
75 //                   or Jingle <content><description>)
76 const std::string LN_DESCRIPTION("description");
77 const std::string LN_PAYLOADTYPE("payload-type");
78 const buzz::QName QN_ID(true, NS_EMPTY, "id");
79 const buzz::QName QN_SID(true, NS_EMPTY, "sid");
80 const buzz::QName QN_NAME(true, NS_EMPTY, "name");
81 const buzz::QName QN_CLOCKRATE(true, NS_EMPTY, "clockrate");
82 const buzz::QName QN_BITRATE(true, NS_EMPTY, "bitrate");
83 const buzz::QName QN_CHANNELS(true, NS_EMPTY, "channels");
84 const buzz::QName QN_WIDTH(true, NS_EMPTY, "width");
85 const buzz::QName QN_HEIGHT(true, NS_EMPTY, "height");
86 const buzz::QName QN_FRAMERATE(true, NS_EMPTY, "framerate");
87 const std::string LN_NAME("name");
88 const std::string LN_VALUE("value");
89 const buzz::QName QN_PAYLOADTYPE_PARAMETER_NAME(true, NS_EMPTY, LN_NAME);
90 const buzz::QName QN_PAYLOADTYPE_PARAMETER_VALUE(true, NS_EMPTY, LN_VALUE);
91 const std::string PAYLOADTYPE_PARAMETER_BITRATE("bitrate");
92 const std::string PAYLOADTYPE_PARAMETER_HEIGHT("height");
93 const std::string PAYLOADTYPE_PARAMETER_WIDTH("width");
94 const std::string PAYLOADTYPE_PARAMETER_FRAMERATE("framerate");
95 const std::string LN_BANDWIDTH("bandwidth");
96 
97 const std::string CN_AUDIO("audio");
98 const std::string CN_VIDEO("video");
99 const std::string CN_OTHER("main");
100 
101 const std::string NS_JINGLE_RTP("urn:xmpp:jingle:apps:rtp:1");
102 const buzz::QName QN_JINGLE_RTP_CONTENT(
103     true, NS_JINGLE_RTP, LN_DESCRIPTION);
104 const buzz::QName QN_JINGLE_RTP_PAYLOADTYPE(
105     true, NS_JINGLE_RTP, LN_PAYLOADTYPE);
106 const buzz::QName QN_JINGLE_RTP_BANDWIDTH(
107     true, NS_JINGLE_RTP, LN_BANDWIDTH);
108 const buzz::QName QN_PARAMETER(true, NS_JINGLE_RTP, "parameter");
109 
110 const std::string NS_GINGLE_AUDIO("http://www.google.com/session/phone");
111 const buzz::QName QN_GINGLE_AUDIO_CONTENT(
112     true, NS_GINGLE_AUDIO, LN_DESCRIPTION);
113 const buzz::QName QN_GINGLE_AUDIO_PAYLOADTYPE(
114     true, NS_GINGLE_AUDIO, LN_PAYLOADTYPE);
115 const buzz::QName QN_GINGLE_AUDIO_SRCID(true, NS_GINGLE_AUDIO, "src-id");
116 const std::string NS_GINGLE_VIDEO("http://www.google.com/session/video");
117 const buzz::QName QN_GINGLE_VIDEO_CONTENT(
118     true, NS_GINGLE_VIDEO, LN_DESCRIPTION);
119 const buzz::QName QN_GINGLE_VIDEO_PAYLOADTYPE(
120     true, NS_GINGLE_VIDEO, LN_PAYLOADTYPE);
121 const buzz::QName QN_GINGLE_VIDEO_SRCID(true, NS_GINGLE_VIDEO, "src-id");
122 const buzz::QName QN_GINGLE_VIDEO_BANDWIDTH(
123     true, NS_GINGLE_VIDEO, LN_BANDWIDTH);
124 
125 // Crypto support.
126 const buzz::QName QN_ENCRYPTION(true, NS_JINGLE_RTP, "encryption");
127 const buzz::QName QN_ENCRYPTION_REQUIRED(true, NS_EMPTY, "required");
128 const buzz::QName QN_CRYPTO(true, NS_JINGLE_RTP, "crypto");
129 const buzz::QName QN_GINGLE_AUDIO_CRYPTO_USAGE(true, NS_GINGLE_AUDIO, "usage");
130 const buzz::QName QN_GINGLE_VIDEO_CRYPTO_USAGE(true, NS_GINGLE_VIDEO, "usage");
131 const buzz::QName QN_CRYPTO_SUITE(true, NS_EMPTY, "crypto-suite");
132 const buzz::QName QN_CRYPTO_KEY_PARAMS(true, NS_EMPTY, "key-params");
133 const buzz::QName QN_CRYPTO_TAG(true, NS_EMPTY, "tag");
134 const buzz::QName QN_CRYPTO_SESSION_PARAMS(true, NS_EMPTY, "session-params");
135 
136 // transports and candidates
137 const std::string LN_TRANSPORT("transport");
138 const std::string LN_CANDIDATE("candidate");
139 const buzz::QName QN_UFRAG(true, cricket::NS_EMPTY, "ufrag");
140 const buzz::QName QN_PWD(true, cricket::NS_EMPTY, "pwd");
141 const buzz::QName QN_COMPONENT(true, cricket::NS_EMPTY, "component");
142 const buzz::QName QN_IP(true, cricket::NS_EMPTY, "ip");
143 const buzz::QName QN_PORT(true, cricket::NS_EMPTY, "port");
144 const buzz::QName QN_NETWORK(true, cricket::NS_EMPTY, "network");
145 const buzz::QName QN_GENERATION(true, cricket::NS_EMPTY, "generation");
146 const buzz::QName QN_PRIORITY(true, cricket::NS_EMPTY, "priority");
147 const buzz::QName QN_PROTOCOL(true, cricket::NS_EMPTY, "protocol");
148 const std::string JINGLE_CANDIDATE_TYPE_PEER_STUN("prflx");
149 const std::string JINGLE_CANDIDATE_TYPE_SERVER_STUN("srflx");
150 const std::string JINGLE_CANDIDATE_NAME_RTP("1");
151 const std::string JINGLE_CANDIDATE_NAME_RTCP("2");
152 
153 // TODO Once we are full ICE-UDP compliant, use this namespace.
154 // For now, just use the same as NS_GINGLE_P2P.
155 // const std::string NS_JINGLE_ICE_UDP("urn:xmpp:jingle:transports:ice-udp:1");
156 const std::string NS_GINGLE_P2P("http://www.google.com/transport/p2p");
157 const buzz::QName QN_GINGLE_P2P_TRANSPORT(true, NS_GINGLE_P2P, LN_TRANSPORT);
158 const buzz::QName QN_GINGLE_P2P_CANDIDATE(true, NS_GINGLE_P2P, LN_CANDIDATE);
159 const buzz::QName QN_GINGLE_P2P_UNKNOWN_CHANNEL_NAME(
160     true, NS_GINGLE_P2P, "unknown-channel-name");
161 const buzz::QName QN_GINGLE_CANDIDATE(true, NS_GINGLE, LN_CANDIDATE);
162 const buzz::QName QN_ADDRESS(true, cricket::NS_EMPTY, "address");
163 const buzz::QName QN_USERNAME(true, cricket::NS_EMPTY, "username");
164 const buzz::QName QN_PASSWORD(true, cricket::NS_EMPTY, "password");
165 const buzz::QName QN_PREFERENCE(true, cricket::NS_EMPTY, "preference");
166 const std::string GINGLE_CANDIDATE_TYPE_STUN("stun");
167 const std::string GINGLE_CANDIDATE_NAME_RTP("rtp");
168 const std::string GINGLE_CANDIDATE_NAME_RTCP("rtcp");
169 const std::string GINGLE_CANDIDATE_NAME_VIDEO_RTP("video_rtp");
170 const std::string GINGLE_CANDIDATE_NAME_VIDEO_RTCP("video_rtcp");
171 
172 // terminate reasons and errors
173 const std::string JINGLE_ERROR_BAD_REQUEST("bad-request");
174 const std::string JINGLE_ERROR_OUT_OF_ORDER("out-of-order");
175 const std::string JINGLE_ERROR_UNKNOWN_SESSION("unknown-session");
176 
177 // Call terminate reasons from XEP-166
178 const std::string STR_TERMINATE_DECLINE("decline");
179 const std::string STR_TERMINATE_SUCCESS("success");
180 const std::string STR_TERMINATE_ERROR("general-error");
181 const std::string STR_TERMINATE_INCOMPATIBLE_PARAMETERS(
182     "incompatible-parameters");
183 
184 // Old terminate reasons used by cricket
185 const std::string STR_TERMINATE_CALL_ENDED("call-ended");
186 const std::string STR_TERMINATE_RECIPIENT_UNAVAILABLE("recipient-unavailable");
187 const std::string STR_TERMINATE_RECIPIENT_BUSY("recipient-busy");
188 const std::string STR_TERMINATE_INSUFFICIENT_FUNDS("insufficient-funds");
189 const std::string STR_TERMINATE_NUMBER_MALFORMED("number-malformed");
190 const std::string STR_TERMINATE_NUMBER_DISALLOWED("number-disallowed");
191 const std::string STR_TERMINATE_PROTOCOL_ERROR("protocol-error");
192 const std::string STR_TERMINATE_INTERNAL_SERVER_ERROR("internal-server-error");
193 const std::string STR_TERMINATE_UNKNOWN_ERROR("unknown-error");
194 
195 // Session notify messages
196 const buzz::QName QN_GINGLE_NOTIFY(true, NS_GINGLE, "notify");
197 const buzz::QName QN_GINGLE_NOTIFY_NICK(true, cricket::NS_EMPTY, "nick");
198 const buzz::QName QN_GINGLE_NOTIFY_SOURCE(true, NS_GINGLE, "source");
199 const buzz::QName QN_GINGLE_NOTIFY_SOURCE_MTYPE(
200     true, cricket::NS_EMPTY, "mtype");
201 const buzz::QName QN_GINGLE_NOTIFY_SOURCE_SSRC(true, cricket::NS_EMPTY, "ssrc");
202 const std::string GINGLE_NOTIFY_SOURCE_MTYPE_AUDIO("audio");
203 const std::string GINGLE_NOTIFY_SOURCE_MTYPE_VIDEO("video");
204 
205 // Session view messages
206 const buzz::QName QN_GINGLE_VIEW(true, cricket::NS_EMPTY, "view");
207 const buzz::QName QN_GINGLE_VIEW_TYPE(true, cricket::NS_EMPTY, "type");
208 const buzz::QName QN_GINGLE_VIEW_NICK(true, cricket::NS_EMPTY, "nick");
209 const buzz::QName QN_GINGLE_VIEW_MEDIA_TYPE(true, cricket::NS_EMPTY, "mtype");
210 const buzz::QName QN_GINGLE_VIEW_SSRC(true, cricket::NS_EMPTY, "ssrc");
211 const std::string GINGLE_VIEW_TYPE_STATIC("static");
212 const std::string GINGLE_VIEW_TYPE_DYNAMIC("dynamic");
213 const std::string GINGLE_VIEW_MEDIA_TYPE_AUDIO("audio");
214 const std::string GINGLE_VIEW_MEDIA_TYPE_VIDEO("video");
215 const buzz::QName QN_GINGLE_VIEW_PARAMS(true, cricket::NS_EMPTY, "params");
216 const buzz::QName QN_GINGLE_VIEW_PARAMS_WIDTH(true, cricket::NS_EMPTY, "width");
217 const buzz::QName QN_GINGLE_VIEW_PARAMS_HEIGHT(
218     true, cricket::NS_EMPTY, "height");
219 const buzz::QName QN_GINGLE_VIEW_PARAMS_FRAMERATE(
220     true, cricket::NS_EMPTY, "framerate");
221 
222 
223 // old stuff
224 #ifdef FEATURE_ENABLE_VOICEMAIL
225 const std::string NS_VOICEMAIL("http://www.google.com/session/voicemail");
226 const buzz::QName QN_VOICEMAIL_REGARDING(true, NS_VOICEMAIL, "regarding");
227 #endif
228 
229 }  // namespace cricket
230