3
* Copyright 2004--2005, Google Inc.
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions are met:
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.
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.
28
#include "talk/xmpp/constants.h"
32
#include "talk/base/basicdefs.h"
33
#include "talk/xmllite/xmlconstants.h"
34
#include "talk/xmllite/xmlelement.h"
35
#include "talk/xmllite/qname.h"
36
#include "talk/xmpp/jid.h"
40
// TODO: Remove static objects of complex types, particularly
43
const char NS_CLIENT[] = "jabber:client";
44
const char NS_SERVER[] = "jabber:server";
45
const char NS_STREAM[] = "http://etherx.jabber.org/streams";
46
const char NS_XSTREAM[] = "urn:ietf:params:xml:ns:xmpp-streams";
47
const char NS_TLS[] = "urn:ietf:params:xml:ns:xmpp-tls";
48
const char NS_SASL[] = "urn:ietf:params:xml:ns:xmpp-sasl";
49
const char NS_BIND[] = "urn:ietf:params:xml:ns:xmpp-bind";
50
const char NS_DIALBACK[] = "jabber:server:dialback";
51
const char NS_SESSION[] = "urn:ietf:params:xml:ns:xmpp-session";
52
const char NS_STANZA[] = "urn:ietf:params:xml:ns:xmpp-stanzas";
53
const char NS_PRIVACY[] = "jabber:iq:privacy";
54
const char NS_ROSTER[] = "jabber:iq:roster";
55
const char NS_VCARD[] = "vcard-temp";
56
const char NS_AVATAR_HASH[] = "google:avatar";
57
const char NS_VCARD_UPDATE[] = "vcard-temp:x:update";
58
const char STR_CLIENT[] = "client";
59
const char STR_SERVER[] = "server";
60
const char STR_STREAM[] = "stream";
62
const char STR_GET[] = "get";
63
const char STR_SET[] = "set";
64
const char STR_RESULT[] = "result";
65
const char STR_ERROR[] = "error";
67
const char STR_FORM[] = "form";
68
const char STR_SUBMIT[] = "submit";
69
const char STR_TEXT_SINGLE[] = "text-single";
70
const char STR_LIST_SINGLE[] = "list-single";
71
const char STR_LIST_MULTI[] = "list-multi";
72
const char STR_HIDDEN[] = "hidden";
73
const char STR_FORM_TYPE[] = "FORM_TYPE";
75
const char STR_FROM[] = "from";
76
const char STR_TO[] = "to";
77
const char STR_BOTH[] = "both";
78
const char STR_REMOVE[] = "remove";
80
const char STR_TYPE[] = "type";
81
const char STR_NAME[] = "name";
82
const char STR_ID[] = "id";
83
const char STR_JID[] = "jid";
84
const char STR_SUBSCRIPTION[] = "subscription";
85
const char STR_ASK[] = "ask";
86
const char STR_X[] = "x";
87
const char STR_GOOGLE_COM[] = "google.com";
88
const char STR_GMAIL_COM[] = "gmail.com";
89
const char STR_GOOGLEMAIL_COM[] = "googlemail.com";
90
const char STR_DEFAULT_DOMAIN[] = "default.talk.google.com";
91
const char STR_TALK_GOOGLE_COM[] = "talk.google.com";
92
const char STR_TALKX_L_GOOGLE_COM[] = "talkx.l.google.com";
93
const char STR_XMPP_GOOGLE_COM[] = "xmpp.google.com";
94
const char STR_XMPPX_L_GOOGLE_COM[] = "xmppx.l.google.com";
96
#ifdef FEATURE_ENABLE_VOICEMAIL
97
const char STR_VOICEMAIL[] = "voicemail";
98
const char STR_OUTGOINGVOICEMAIL[] = "outgoingvoicemail";
101
const char STR_UNAVAILABLE[] = "unavailable";
103
const char STR_GOOGLE_MUC_LOOKUP_JID[] = "lookup.groupchat.google.com";
104
const char STR_MUC_ROOMCONFIG_ROOMNAME[] = "muc#roomconfig_roomname";
105
const char STR_MUC_ROOMCONFIG_FEATURES[] = "muc#roomconfig_features";
106
const char STR_MUC_ROOM_FEATURE_ENTERPRISE[] = "muc_enterprise";
107
const char STR_MUC_ROOMCONFIG[] = "http://jabber.org/protocol/muc#roomconfig";
109
const StaticQName QN_STREAM_STREAM = { NS_STREAM, STR_STREAM };
110
const StaticQName QN_STREAM_FEATURES = { NS_STREAM, "features" };
111
const StaticQName QN_STREAM_ERROR = { NS_STREAM, "error" };
113
const StaticQName QN_XSTREAM_BAD_FORMAT = { NS_XSTREAM, "bad-format" };
114
const StaticQName QN_XSTREAM_BAD_NAMESPACE_PREFIX =
115
{ NS_XSTREAM, "bad-namespace-prefix" };
116
const StaticQName QN_XSTREAM_CONFLICT = { NS_XSTREAM, "conflict" };
117
const StaticQName QN_XSTREAM_CONNECTION_TIMEOUT =
118
{ NS_XSTREAM, "connection-timeout" };
119
const StaticQName QN_XSTREAM_HOST_GONE = { NS_XSTREAM, "host-gone" };
120
const StaticQName QN_XSTREAM_HOST_UNKNOWN = { NS_XSTREAM, "host-unknown" };
121
const StaticQName QN_XSTREAM_IMPROPER_ADDRESSIING =
122
{ NS_XSTREAM, "improper-addressing" };
123
const StaticQName QN_XSTREAM_INTERNAL_SERVER_ERROR =
124
{ NS_XSTREAM, "internal-server-error" };
125
const StaticQName QN_XSTREAM_INVALID_FROM = { NS_XSTREAM, "invalid-from" };
126
const StaticQName QN_XSTREAM_INVALID_ID = { NS_XSTREAM, "invalid-id" };
127
const StaticQName QN_XSTREAM_INVALID_NAMESPACE =
128
{ NS_XSTREAM, "invalid-namespace" };
129
const StaticQName QN_XSTREAM_INVALID_XML = { NS_XSTREAM, "invalid-xml" };
130
const StaticQName QN_XSTREAM_NOT_AUTHORIZED = { NS_XSTREAM, "not-authorized" };
131
const StaticQName QN_XSTREAM_POLICY_VIOLATION =
132
{ NS_XSTREAM, "policy-violation" };
133
const StaticQName QN_XSTREAM_REMOTE_CONNECTION_FAILED =
134
{ NS_XSTREAM, "remote-connection-failed" };
135
const StaticQName QN_XSTREAM_RESOURCE_CONSTRAINT =
136
{ NS_XSTREAM, "resource-constraint" };
137
const StaticQName QN_XSTREAM_RESTRICTED_XML = { NS_XSTREAM, "restricted-xml" };
138
const StaticQName QN_XSTREAM_SEE_OTHER_HOST = { NS_XSTREAM, "see-other-host" };
139
const StaticQName QN_XSTREAM_SYSTEM_SHUTDOWN =
140
{ NS_XSTREAM, "system-shutdown" };
141
const StaticQName QN_XSTREAM_UNDEFINED_CONDITION =
142
{ NS_XSTREAM, "undefined-condition" };
143
const StaticQName QN_XSTREAM_UNSUPPORTED_ENCODING =
144
{ NS_XSTREAM, "unsupported-encoding" };
145
const StaticQName QN_XSTREAM_UNSUPPORTED_STANZA_TYPE =
146
{ NS_XSTREAM, "unsupported-stanza-type" };
147
const StaticQName QN_XSTREAM_UNSUPPORTED_VERSION =
148
{ NS_XSTREAM, "unsupported-version" };
149
const StaticQName QN_XSTREAM_XML_NOT_WELL_FORMED =
150
{ NS_XSTREAM, "xml-not-well-formed" };
151
const StaticQName QN_XSTREAM_TEXT = { NS_XSTREAM, "text" };
153
const StaticQName QN_TLS_STARTTLS = { NS_TLS, "starttls" };
154
const StaticQName QN_TLS_REQUIRED = { NS_TLS, "required" };
155
const StaticQName QN_TLS_PROCEED = { NS_TLS, "proceed" };
156
const StaticQName QN_TLS_FAILURE = { NS_TLS, "failure" };
158
const StaticQName QN_SASL_MECHANISMS = { NS_SASL, "mechanisms" };
159
const StaticQName QN_SASL_MECHANISM = { NS_SASL, "mechanism" };
160
const StaticQName QN_SASL_AUTH = { NS_SASL, "auth" };
161
const StaticQName QN_SASL_CHALLENGE = { NS_SASL, "challenge" };
162
const StaticQName QN_SASL_RESPONSE = { NS_SASL, "response" };
163
const StaticQName QN_SASL_ABORT = { NS_SASL, "abort" };
164
const StaticQName QN_SASL_SUCCESS = { NS_SASL, "success" };
165
const StaticQName QN_SASL_FAILURE = { NS_SASL, "failure" };
166
const StaticQName QN_SASL_ABORTED = { NS_SASL, "aborted" };
167
const StaticQName QN_SASL_INCORRECT_ENCODING =
168
{ NS_SASL, "incorrect-encoding" };
169
const StaticQName QN_SASL_INVALID_AUTHZID = { NS_SASL, "invalid-authzid" };
170
const StaticQName QN_SASL_INVALID_MECHANISM = { NS_SASL, "invalid-mechanism" };
171
const StaticQName QN_SASL_MECHANISM_TOO_WEAK =
172
{ NS_SASL, "mechanism-too-weak" };
173
const StaticQName QN_SASL_NOT_AUTHORIZED = { NS_SASL, "not-authorized" };
174
const StaticQName QN_SASL_TEMPORARY_AUTH_FAILURE =
175
{ NS_SASL, "temporary-auth-failure" };
177
// These are non-standard.
178
const char NS_GOOGLE_AUTH_PROTOCOL[] =
179
"http://www.google.com/talk/protocol/auth";
180
const StaticQName QN_GOOGLE_AUTH_CLIENT_USES_FULL_BIND_RESULT =
181
{ NS_GOOGLE_AUTH_PROTOCOL, "client-uses-full-bind-result" };
182
const char NS_GOOGLE_AUTH_OLD[] = "google:auth";
183
const StaticQName QN_GOOGLE_ALLOW_NON_GOOGLE_ID_XMPP_LOGIN =
184
{ NS_GOOGLE_AUTH_PROTOCOL, "allow-non-google-login" };
186
const StaticQName QN_DIALBACK_RESULT = { NS_DIALBACK, "result" };
187
const StaticQName QN_DIALBACK_VERIFY = { NS_DIALBACK, "verify" };
189
const StaticQName QN_STANZA_BAD_REQUEST = { NS_STANZA, "bad-request" };
190
const StaticQName QN_STANZA_CONFLICT = { NS_STANZA, "conflict" };
191
const StaticQName QN_STANZA_FEATURE_NOT_IMPLEMENTED =
192
{ NS_STANZA, "feature-not-implemented" };
193
const StaticQName QN_STANZA_FORBIDDEN = { NS_STANZA, "forbidden" };
194
const StaticQName QN_STANZA_GONE = { NS_STANZA, "gone" };
195
const StaticQName QN_STANZA_INTERNAL_SERVER_ERROR =
196
{ NS_STANZA, "internal-server-error" };
197
const StaticQName QN_STANZA_ITEM_NOT_FOUND = { NS_STANZA, "item-not-found" };
198
const StaticQName QN_STANZA_JID_MALFORMED = { NS_STANZA, "jid-malformed" };
199
const StaticQName QN_STANZA_NOT_ACCEPTABLE = { NS_STANZA, "not-acceptable" };
200
const StaticQName QN_STANZA_NOT_ALLOWED = { NS_STANZA, "not-allowed" };
201
const StaticQName QN_STANZA_PAYMENT_REQUIRED =
202
{ NS_STANZA, "payment-required" };
203
const StaticQName QN_STANZA_RECIPIENT_UNAVAILABLE =
204
{ NS_STANZA, "recipient-unavailable" };
205
const StaticQName QN_STANZA_REDIRECT = { NS_STANZA, "redirect" };
206
const StaticQName QN_STANZA_REGISTRATION_REQUIRED =
207
{ NS_STANZA, "registration-required" };
208
const StaticQName QN_STANZA_REMOTE_SERVER_NOT_FOUND =
209
{ NS_STANZA, "remote-server-not-found" };
210
const StaticQName QN_STANZA_REMOTE_SERVER_TIMEOUT =
211
{ NS_STANZA, "remote-server-timeout" };
212
const StaticQName QN_STANZA_RESOURCE_CONSTRAINT =
213
{ NS_STANZA, "resource-constraint" };
214
const StaticQName QN_STANZA_SERVICE_UNAVAILABLE =
215
{ NS_STANZA, "service-unavailable" };
216
const StaticQName QN_STANZA_SUBSCRIPTION_REQUIRED =
217
{ NS_STANZA, "subscription-required" };
218
const StaticQName QN_STANZA_UNDEFINED_CONDITION =
219
{ NS_STANZA, "undefined-condition" };
220
const StaticQName QN_STANZA_UNEXPECTED_REQUEST =
221
{ NS_STANZA, "unexpected-request" };
222
const StaticQName QN_STANZA_TEXT = { NS_STANZA, "text" };
224
const StaticQName QN_BIND_BIND = { NS_BIND, "bind" };
225
const StaticQName QN_BIND_RESOURCE = { NS_BIND, "resource" };
226
const StaticQName QN_BIND_JID = { NS_BIND, "jid" };
228
const StaticQName QN_MESSAGE = { NS_CLIENT, "message" };
229
const StaticQName QN_BODY = { NS_CLIENT, "body" };
230
const StaticQName QN_SUBJECT = { NS_CLIENT, "subject" };
231
const StaticQName QN_THREAD = { NS_CLIENT, "thread" };
232
const StaticQName QN_PRESENCE = { NS_CLIENT, "presence" };
233
const StaticQName QN_SHOW = { NS_CLIENT, "show" };
234
const StaticQName QN_STATUS = { NS_CLIENT, "status" };
235
const StaticQName QN_LANG = { NS_CLIENT, "lang" };
236
const StaticQName QN_PRIORITY = { NS_CLIENT, "priority" };
237
const StaticQName QN_IQ = { NS_CLIENT, "iq" };
238
const StaticQName QN_ERROR = { NS_CLIENT, "error" };
240
const StaticQName QN_SERVER_MESSAGE = { NS_SERVER, "message" };
241
const StaticQName QN_SERVER_BODY = { NS_SERVER, "body" };
242
const StaticQName QN_SERVER_SUBJECT = { NS_SERVER, "subject" };
243
const StaticQName QN_SERVER_THREAD = { NS_SERVER, "thread" };
244
const StaticQName QN_SERVER_PRESENCE = { NS_SERVER, "presence" };
245
const StaticQName QN_SERVER_SHOW = { NS_SERVER, "show" };
246
const StaticQName QN_SERVER_STATUS = { NS_SERVER, "status" };
247
const StaticQName QN_SERVER_LANG = { NS_SERVER, "lang" };
248
const StaticQName QN_SERVER_PRIORITY = { NS_SERVER, "priority" };
249
const StaticQName QN_SERVER_IQ = { NS_SERVER, "iq" };
250
const StaticQName QN_SERVER_ERROR = { NS_SERVER, "error" };
252
const StaticQName QN_SESSION_SESSION = { NS_SESSION, "session" };
254
const StaticQName QN_PRIVACY_QUERY = { NS_PRIVACY, "query" };
255
const StaticQName QN_PRIVACY_ACTIVE = { NS_PRIVACY, "active" };
256
const StaticQName QN_PRIVACY_DEFAULT = { NS_PRIVACY, "default" };
257
const StaticQName QN_PRIVACY_LIST = { NS_PRIVACY, "list" };
258
const StaticQName QN_PRIVACY_ITEM = { NS_PRIVACY, "item" };
259
const StaticQName QN_PRIVACY_IQ = { NS_PRIVACY, "iq" };
260
const StaticQName QN_PRIVACY_MESSAGE = { NS_PRIVACY, "message" };
261
const StaticQName QN_PRIVACY_PRESENCE_IN = { NS_PRIVACY, "presence-in" };
262
const StaticQName QN_PRIVACY_PRESENCE_OUT = { NS_PRIVACY, "presence-out" };
264
const StaticQName QN_ROSTER_QUERY = { NS_ROSTER, "query" };
265
const StaticQName QN_ROSTER_ITEM = { NS_ROSTER, "item" };
266
const StaticQName QN_ROSTER_GROUP = { NS_ROSTER, "group" };
268
const StaticQName QN_VCARD = { NS_VCARD, "vCard" };
269
const StaticQName QN_VCARD_FN = { NS_VCARD, "FN" };
270
const StaticQName QN_VCARD_PHOTO = { NS_VCARD, "PHOTO" };
271
const StaticQName QN_VCARD_PHOTO_BINVAL = { NS_VCARD, "BINVAL" };
272
const StaticQName QN_VCARD_AVATAR_HASH = { NS_AVATAR_HASH, "hash" };
273
const StaticQName QN_VCARD_AVATAR_HASH_MODIFIED =
274
{ NS_AVATAR_HASH, "modified" };
276
const StaticQName QN_NAME = { STR_EMPTY, "name" };
277
const StaticQName QN_AFFILIATION = { STR_EMPTY, "affiliation" };
278
const StaticQName QN_ROLE = { STR_EMPTY, "role" };
280
#if defined(FEATURE_ENABLE_PSTN)
281
const StaticQName QN_VCARD_TEL = { NS_VCARD, "TEL" };
282
const StaticQName QN_VCARD_VOICE = { NS_VCARD, "VOICE" };
283
const StaticQName QN_VCARD_HOME = { NS_VCARD, "HOME" };
284
const StaticQName QN_VCARD_WORK = { NS_VCARD, "WORK" };
285
const StaticQName QN_VCARD_CELL = { NS_VCARD, "CELL" };
286
const StaticQName QN_VCARD_NUMBER = { NS_VCARD, "NUMBER" };
289
const StaticQName QN_XML_LANG = { NS_XML, "lang" };
291
const StaticQName QN_ENCODING = { STR_EMPTY, STR_ENCODING };
292
const StaticQName QN_VERSION = { STR_EMPTY, STR_VERSION };
293
const StaticQName QN_TO = { STR_EMPTY, "to" };
294
const StaticQName QN_FROM = { STR_EMPTY, "from" };
295
const StaticQName QN_TYPE = { STR_EMPTY, "type" };
296
const StaticQName QN_ID = { STR_EMPTY, "id" };
297
const StaticQName QN_CODE = { STR_EMPTY, "code" };
299
const StaticQName QN_VALUE = { STR_EMPTY, "value" };
300
const StaticQName QN_ACTION = { STR_EMPTY, "action" };
301
const StaticQName QN_ORDER = { STR_EMPTY, "order" };
302
const StaticQName QN_MECHANISM = { STR_EMPTY, "mechanism" };
303
const StaticQName QN_ASK = { STR_EMPTY, "ask" };
304
const StaticQName QN_JID = { STR_EMPTY, "jid" };
305
const StaticQName QN_NICK = { STR_EMPTY, "nick" };
306
const StaticQName QN_SUBSCRIPTION = { STR_EMPTY, "subscription" };
307
const StaticQName QN_TITLE1 = { STR_EMPTY, "title1" };
308
const StaticQName QN_TITLE2 = { STR_EMPTY, "title2" };
309
const StaticQName QN_SOURCE = { STR_EMPTY, "source" };
310
const StaticQName QN_TIME = { STR_EMPTY, "time" };
312
const StaticQName QN_XMLNS_CLIENT = { NS_XMLNS, STR_CLIENT };
313
const StaticQName QN_XMLNS_SERVER = { NS_XMLNS, STR_SERVER };
314
const StaticQName QN_XMLNS_STREAM = { NS_XMLNS, STR_STREAM };
318
const char STR_SHOW_AWAY[] = "away";
319
const char STR_SHOW_CHAT[] = "chat";
320
const char STR_SHOW_DND[] = "dnd";
321
const char STR_SHOW_XA[] = "xa";
322
const char STR_SHOW_OFFLINE[] = "offline";
325
const char STR_SUBSCRIBE[] = "subscribe";
326
const char STR_SUBSCRIBED[] = "subscribed";
327
const char STR_UNSUBSCRIBE[] = "unsubscribe";
328
const char STR_UNSUBSCRIBED[] = "unsubscribed";
331
const char NS_GOOGLE_INVITE[] = "google:subscribe";
332
const StaticQName QN_INVITATION = { NS_GOOGLE_INVITE, "invitation" };
333
const StaticQName QN_INVITE_NAME = { NS_GOOGLE_INVITE, "name" };
334
const StaticQName QN_INVITE_SUBJECT = { NS_GOOGLE_INVITE, "subject" };
335
const StaticQName QN_INVITE_MESSAGE = { NS_GOOGLE_INVITE, "body" };
337
// PubSub: http://xmpp.org/extensions/xep-0060.html
338
const char NS_PUBSUB[] = "http://jabber.org/protocol/pubsub";
339
const StaticQName QN_PUBSUB = { NS_PUBSUB, "pubsub" };
340
const StaticQName QN_PUBSUB_ITEMS = { NS_PUBSUB, "items" };
341
const StaticQName QN_PUBSUB_ITEM = { NS_PUBSUB, "item" };
342
const StaticQName QN_PUBSUB_PUBLISH = { NS_PUBSUB, "publish" };
343
const StaticQName QN_PUBSUB_RETRACT = { NS_PUBSUB, "retract" };
344
const StaticQName QN_ATTR_PUBLISHER = { STR_EMPTY, "publisher" };
346
const char NS_PUBSUB_EVENT[] = "http://jabber.org/protocol/pubsub#event";
347
const StaticQName QN_NODE = { STR_EMPTY, "node" };
348
const StaticQName QN_PUBSUB_EVENT = { NS_PUBSUB_EVENT, "event" };
349
const StaticQName QN_PUBSUB_EVENT_ITEMS = { NS_PUBSUB_EVENT, "items" };
350
const StaticQName QN_PUBSUB_EVENT_ITEM = { NS_PUBSUB_EVENT, "item" };
351
const StaticQName QN_PUBSUB_EVENT_RETRACT = { NS_PUBSUB_EVENT, "retract" };
352
const StaticQName QN_NOTIFY = { STR_EMPTY, "notify" };
354
const char NS_PRESENTER[] = "google:presenter";
355
const StaticQName QN_PRESENTER_PRESENTER = { NS_PRESENTER, "presenter" };
356
const StaticQName QN_PRESENTER_PRESENTATION_ITEM =
357
{ NS_PRESENTER, "presentation-item" };
358
const StaticQName QN_PRESENTER_PRESENTATION_TYPE =
359
{ NS_PRESENTER, "presentation-type" };
360
const StaticQName QN_PRESENTER_PRESENTATION_ID =
361
{ NS_PRESENTER, "presentation-id" };
364
const StaticQName QN_CATEGORY = { STR_EMPTY, "category" };
365
const StaticQName QN_VAR = { STR_EMPTY, "var" };
366
const char NS_DISCO_INFO[] = "http://jabber.org/protocol/disco#info";
367
const char NS_DISCO_ITEMS[] = "http://jabber.org/protocol/disco#items";
368
const StaticQName QN_DISCO_INFO_QUERY = { NS_DISCO_INFO, "query" };
369
const StaticQName QN_DISCO_IDENTITY = { NS_DISCO_INFO, "identity" };
370
const StaticQName QN_DISCO_FEATURE = { NS_DISCO_INFO, "feature" };
372
const StaticQName QN_DISCO_ITEMS_QUERY = { NS_DISCO_ITEMS, "query" };
373
const StaticQName QN_DISCO_ITEM = { NS_DISCO_ITEMS, "item" };
376
const char NS_FEATURE[] = "http://jabber.org/protocol/feature-neg";
377
const StaticQName QN_FEATURE_FEATURE = { NS_FEATURE, "feature" };
380
const char NS_XDATA[] = "jabber:x:data";
381
const StaticQName QN_XDATA_X = { NS_XDATA, "x" };
382
const StaticQName QN_XDATA_INSTRUCTIONS = { NS_XDATA, "instructions" };
383
const StaticQName QN_XDATA_TITLE = { NS_XDATA, "title" };
384
const StaticQName QN_XDATA_FIELD = { NS_XDATA, "field" };
385
const StaticQName QN_XDATA_REPORTED = { NS_XDATA, "reported" };
386
const StaticQName QN_XDATA_ITEM = { NS_XDATA, "item" };
387
const StaticQName QN_XDATA_DESC = { NS_XDATA, "desc" };
388
const StaticQName QN_XDATA_REQUIRED = { NS_XDATA, "required" };
389
const StaticQName QN_XDATA_VALUE = { NS_XDATA, "value" };
390
const StaticQName QN_XDATA_OPTION = { NS_XDATA, "option" };
393
const char NS_MUC[] = "http://jabber.org/protocol/muc";
394
const StaticQName QN_MUC_X = { NS_MUC, "x" };
395
const StaticQName QN_MUC_ITEM = { NS_MUC, "item" };
396
const StaticQName QN_MUC_AFFILIATION = { NS_MUC, "affiliation" };
397
const StaticQName QN_MUC_ROLE = { NS_MUC, "role" };
398
const char STR_AFFILIATION_NONE[] = "none";
399
const char STR_ROLE_PARTICIPANT[] = "participant";
401
const char NS_MUC_OWNER[] = "http://jabber.org/protocol/muc#owner";
402
const StaticQName QN_MUC_OWNER_QUERY = { NS_MUC_OWNER, "query" };
404
const char NS_MUC_USER[] = "http://jabber.org/protocol/muc#user";
405
const StaticQName QN_MUC_USER_CONTINUE = { NS_MUC_USER, "continue" };
406
const StaticQName QN_MUC_USER_X = { NS_MUC_USER, "x" };
407
const StaticQName QN_MUC_USER_ITEM = { NS_MUC_USER, "item" };
408
const StaticQName QN_MUC_USER_STATUS = { NS_MUC_USER, "status" };
410
// JEP 0055 - Jabber Search
411
const char NS_SEARCH[] = "jabber:iq:search";
412
const StaticQName QN_SEARCH_QUERY = { NS_SEARCH, "query" };
413
const StaticQName QN_SEARCH_ITEM = { NS_SEARCH, "item" };
414
const StaticQName QN_SEARCH_ROOM_NAME = { NS_SEARCH, "room-name" };
415
const StaticQName QN_SEARCH_ROOM_DOMAIN = { NS_SEARCH, "room-domain" };
416
const StaticQName QN_SEARCH_ROOM_JID = { NS_SEARCH, "room-jid" };
419
const char NS_CAPS[] = "http://jabber.org/protocol/caps";
420
const StaticQName QN_CAPS_C = { NS_CAPS, "c" };
421
const StaticQName QN_VER = { STR_EMPTY, "ver" };
422
const StaticQName QN_EXT = { STR_EMPTY, "ext" };
425
const char kNSVCard[] = "vcard-temp:x:update";
426
const StaticQName kQnVCardX = { kNSVCard, "x" };
427
const StaticQName kQnVCardPhoto = { kNSVCard, "photo" };
429
// JEP 0172 User Nickname
430
const char NS_NICKNAME[] = "http://jabber.org/protocol/nick";
431
const StaticQName QN_NICKNAME = { NS_NICKNAME, "nick" };
433
// JEP 0085 chat state
434
const char NS_CHATSTATE[] = "http://jabber.org/protocol/chatstates";
435
const StaticQName QN_CS_ACTIVE = { NS_CHATSTATE, "active" };
436
const StaticQName QN_CS_COMPOSING = { NS_CHATSTATE, "composing" };
437
const StaticQName QN_CS_PAUSED = { NS_CHATSTATE, "paused" };
438
const StaticQName QN_CS_INACTIVE = { NS_CHATSTATE, "inactive" };
439
const StaticQName QN_CS_GONE = { NS_CHATSTATE, "gone" };
441
// JEP 0091 Delayed Delivery
442
const char kNSDelay[] = "jabber:x:delay";
443
const StaticQName kQnDelayX = { kNSDelay, "x" };
444
const StaticQName kQnStamp = { STR_EMPTY, "stamp" };
446
// Google time stamping (higher resolution)
447
const char kNSTimestamp[] = "google:timestamp";
448
const StaticQName kQnTime = { kNSTimestamp, "time" };
449
const StaticQName kQnMilliseconds = { STR_EMPTY, "ms" };
452
const char NS_JINGLE_INFO[] = "google:jingleinfo";
453
const StaticQName QN_JINGLE_INFO_QUERY = { NS_JINGLE_INFO, "query" };
454
const StaticQName QN_JINGLE_INFO_STUN = { NS_JINGLE_INFO, "stun" };
455
const StaticQName QN_JINGLE_INFO_RELAY = { NS_JINGLE_INFO, "relay" };
456
const StaticQName QN_JINGLE_INFO_SERVER = { NS_JINGLE_INFO, "server" };
457
const StaticQName QN_JINGLE_INFO_TOKEN = { NS_JINGLE_INFO, "token" };
458
const StaticQName QN_JINGLE_INFO_HOST = { STR_EMPTY, "host" };
459
const StaticQName QN_JINGLE_INFO_TCP = { STR_EMPTY, "tcp" };
460
const StaticQName QN_JINGLE_INFO_UDP = { STR_EMPTY, "udp" };
461
const StaticQName QN_JINGLE_INFO_TCPSSL = { STR_EMPTY, "tcpssl" };
463
// Call Performance Logging
464
const char NS_GOOGLE_CALLPERF_STATS[] = "google:call-perf-stats";
465
const StaticQName QN_CALLPERF_STATS =
466
{ NS_GOOGLE_CALLPERF_STATS, "callPerfStats" };
467
const StaticQName QN_CALLPERF_SESSIONID = { STR_EMPTY, "sessionId" };
468
const StaticQName QN_CALLPERF_LOCALUSER = { STR_EMPTY, "localUser" };
469
const StaticQName QN_CALLPERF_REMOTEUSER = { STR_EMPTY, "remoteUser" };
470
const StaticQName QN_CALLPERF_STARTTIME = { STR_EMPTY, "startTime" };
471
const StaticQName QN_CALLPERF_CALL_LENGTH = { STR_EMPTY, "callLength" };
472
const StaticQName QN_CALLPERF_CALL_ACCEPTED = { STR_EMPTY, "callAccepted" };
473
const StaticQName QN_CALLPERF_CALL_ERROR_CODE = { STR_EMPTY, "callErrorCode" };
474
const StaticQName QN_CALLPERF_TERMINATE_CODE = { STR_EMPTY, "terminateCode" };
475
const StaticQName QN_CALLPERF_DATAPOINT =
476
{ NS_GOOGLE_CALLPERF_STATS, "dataPoint" };
477
const StaticQName QN_CALLPERF_DATAPOINT_TIME = { STR_EMPTY, "timeStamp" };
478
const StaticQName QN_CALLPERF_DATAPOINT_FRACTION_LOST =
479
{ STR_EMPTY, "fraction_lost" };
480
const StaticQName QN_CALLPERF_DATAPOINT_CUM_LOST = { STR_EMPTY, "cum_lost" };
481
const StaticQName QN_CALLPERF_DATAPOINT_EXT_MAX = { STR_EMPTY, "ext_max" };
482
const StaticQName QN_CALLPERF_DATAPOINT_JITTER = { STR_EMPTY, "jitter" };
483
const StaticQName QN_CALLPERF_DATAPOINT_RTT = { STR_EMPTY, "RTT" };
484
const StaticQName QN_CALLPERF_DATAPOINT_BYTES_R =
485
{ STR_EMPTY, "bytesReceived" };
486
const StaticQName QN_CALLPERF_DATAPOINT_PACKETS_R =
487
{ STR_EMPTY, "packetsReceived" };
488
const StaticQName QN_CALLPERF_DATAPOINT_BYTES_S = { STR_EMPTY, "bytesSent" };
489
const StaticQName QN_CALLPERF_DATAPOINT_PACKETS_S =
490
{ STR_EMPTY, "packetsSent" };
491
const StaticQName QN_CALLPERF_DATAPOINT_PROCESS_CPU =
492
{ STR_EMPTY, "processCpu" };
493
const StaticQName QN_CALLPERF_DATAPOINT_SYSTEM_CPU = { STR_EMPTY, "systemCpu" };
494
const StaticQName QN_CALLPERF_DATAPOINT_CPUS = { STR_EMPTY, "cpus" };
495
const StaticQName QN_CALLPERF_CONNECTION =
496
{ NS_GOOGLE_CALLPERF_STATS, "connection" };
497
const StaticQName QN_CALLPERF_CONNECTION_LOCAL_ADDRESS =
498
{ STR_EMPTY, "localAddress" };
499
const StaticQName QN_CALLPERF_CONNECTION_REMOTE_ADDRESS =
500
{ STR_EMPTY, "remoteAddress" };
501
const StaticQName QN_CALLPERF_CONNECTION_FLAGS = { STR_EMPTY, "flags" };
502
const StaticQName QN_CALLPERF_CONNECTION_RTT = { STR_EMPTY, "rtt" };
503
const StaticQName QN_CALLPERF_CONNECTION_TOTAL_BYTES_S =
504
{ STR_EMPTY, "totalBytesSent" };
505
const StaticQName QN_CALLPERF_CONNECTION_BYTES_SECOND_S =
506
{ STR_EMPTY, "bytesSecondSent" };
507
const StaticQName QN_CALLPERF_CONNECTION_TOTAL_BYTES_R =
508
{ STR_EMPTY, "totalBytesRecv" };
509
const StaticQName QN_CALLPERF_CONNECTION_BYTES_SECOND_R =
510
{ STR_EMPTY, "bytesSecondRecv" };
511
const StaticQName QN_CALLPERF_CANDIDATE =
512
{ NS_GOOGLE_CALLPERF_STATS, "candidate" };
513
const StaticQName QN_CALLPERF_CANDIDATE_ENDPOINT = { STR_EMPTY, "endpoint" };
514
const StaticQName QN_CALLPERF_CANDIDATE_PROTOCOL = { STR_EMPTY, "protocol" };
515
const StaticQName QN_CALLPERF_CANDIDATE_ADDRESS = { STR_EMPTY, "address" };
516
const StaticQName QN_CALLPERF_MEDIA = { NS_GOOGLE_CALLPERF_STATS, "media" };
517
const StaticQName QN_CALLPERF_MEDIA_DIRECTION = { STR_EMPTY, "direction" };
518
const StaticQName QN_CALLPERF_MEDIA_SSRC = { STR_EMPTY, "SSRC" };
519
const StaticQName QN_CALLPERF_MEDIA_ENERGY = { STR_EMPTY, "energy" };
520
const StaticQName QN_CALLPERF_MEDIA_FIR = { STR_EMPTY, "fir" };
521
const StaticQName QN_CALLPERF_MEDIA_NACK = { STR_EMPTY, "nack" };
522
const StaticQName QN_CALLPERF_MEDIA_FPS = { STR_EMPTY, "fps" };
523
const StaticQName QN_CALLPERF_MEDIA_FPS_NETWORK = { STR_EMPTY, "fpsNetwork" };
524
const StaticQName QN_CALLPERF_MEDIA_FPS_DECODED = { STR_EMPTY, "fpsDecoded" };
525
const StaticQName QN_CALLPERF_MEDIA_JITTER_BUFFER_SIZE =
526
{ STR_EMPTY, "jitterBufferSize" };
527
const StaticQName QN_CALLPERF_MEDIA_PREFERRED_JITTER_BUFFER_SIZE =
528
{ STR_EMPTY, "preferredJitterBufferSize" };
529
const StaticQName QN_CALLPERF_MEDIA_TOTAL_PLAYOUT_DELAY =
530
{ STR_EMPTY, "totalPlayoutDelay" };
533
const StaticQName QN_MUC_USER_INVITE = { NS_MUC_USER, "invite" };
535
// Multiway audio/video.
536
const char NS_GOOGLE_MUC_USER[] = "google:muc#user";
537
const StaticQName QN_GOOGLE_MUC_USER_AVAILABLE_MEDIA =
538
{ NS_GOOGLE_MUC_USER, "available-media" };
539
const StaticQName QN_GOOGLE_MUC_USER_ENTRY = { NS_GOOGLE_MUC_USER, "entry" };
540
const StaticQName QN_GOOGLE_MUC_USER_MEDIA = { NS_GOOGLE_MUC_USER, "media" };
541
const StaticQName QN_GOOGLE_MUC_USER_TYPE = { NS_GOOGLE_MUC_USER, "type" };
542
const StaticQName QN_GOOGLE_MUC_USER_SRC_ID = { NS_GOOGLE_MUC_USER, "src-id" };
543
const StaticQName QN_GOOGLE_MUC_USER_STATUS = { NS_GOOGLE_MUC_USER, "status" };
544
const StaticQName QN_LABEL = { STR_EMPTY, "label" };
546
const char NS_GOOGLE_MUC_MEDIA[] = "google:muc#media";
547
const StaticQName QN_GOOGLE_MUC_AUDIO_MUTE =
548
{ NS_GOOGLE_MUC_MEDIA, "audio-mute" };
549
const StaticQName QN_GOOGLE_MUC_VIDEO_MUTE =
550
{ NS_GOOGLE_MUC_MEDIA, "video-mute" };
551
const StaticQName QN_GOOGLE_MUC_RECORDING =
552
{ NS_GOOGLE_MUC_MEDIA, "recording" };
553
const StaticQName QN_GOOGLE_MUC_MEDIA_BLOCK = { NS_GOOGLE_MUC_MEDIA, "block" };
554
const StaticQName QN_STATE_ATTR = { STR_EMPTY, "state" };