00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00218 #ifndef GLOOX_H__
00219 #define GLOOX_H__
00220
00221 #include "macros.h"
00222
00223 #include <string>
00224 #include <list>
00225 #include <map>
00226
00227 #ifdef WIN32
00228 #define GLOOX_DLL_EXPORT __declspec( dllexport )
00229 #else
00230 #define GLOOX_DLL_EXPORT
00231 #endif
00232
00233 #define XMLNS_CLIENT "jabber:client"
00234 #define XMLNS_COMPONENT_ACCEPT "jabber:component:accept"
00235 #define XMLNS_COMPONENT_CONNECT "jabber:component:connect"
00236
00237 #define XMLNS_DISCO_INFO "http://jabber.org/protocol/disco#info"
00238 #define XMLNS_DISCO_ITEMS "http://jabber.org/protocol/disco#items"
00239 #define XMLNS_ADHOC_COMMANDS "http://jabber.org/protocol/commands"
00240 #define XMLNS_COMPRESSION "http://jabber.org/protocol/compress"
00241 #define XMLNS_OFFLINE "http://jabber.org/protocol/offline"
00242 #define XMLNS_ROSTER "jabber:iq:roster"
00243 #define XMLNS_VERSION "jabber:iq:version"
00244 #define XMLNS_REGISTER "jabber:iq:register"
00245 #define XMLNS_PRIVACY "jabber:iq:privacy"
00246 #define XMLNS_AUTH "jabber:iq:auth"
00247 #define XMLNS_PRIVATE_XML "jabber:iq:private"
00248 #define XMLNS_ROSTER "jabber:iq:roster"
00249 #define XMLNS_LAST "jabber:iq:last"
00250 #define XMLNS_DATA_FORMS "jabber:x:data"
00251 #define XMLNS_BOOKMARKS "storage:bookmarks"
00252 #define XMLNS_ANNOTATIONS "storage:rosternotes"
00253 #define XMLNS_ROSTER_DELIMITER "roster:delimiter"
00254
00255 #define XMLNS_XMPP_STREAM "urn:ietf:params:xml:ns:xmpp-streams"
00256 #define XMLNS_XMPP_STANZAS "urn:ietf:params:xml:ns:xmpp-stanzas"
00257 #define XMLNS_STREAM_TLS "urn:ietf:params:xml:ns:xmpp-tls"
00258 #define XMLNS_STREAM_SASL "urn:ietf:params:xml:ns:xmpp-sasl"
00259 #define XMLNS_STREAM_BIND "urn:ietf:params:xml:ns:xmpp-bind"
00260 #define XMLNS_STREAM_SESSION "urn:ietf:params:xml:ns:xmpp-session"
00261 #define XMLNS_STREAM_IQAUTH "http://jabber.org/features/iq-auth"
00262 #define XMLNS_STREAM_IQREGISTER "http://jabber.org/features/iq-register"
00263 #define XMLNS_STREAM_ACK "http://jabber.org/features/ack"
00264 #define XMLNS_STREAM_COMPRESS "http://jabber.org/features/compress"
00265
00266 #define XMPP_STREAM_VERSION_MAJOR "1"
00267 #define XMPP_STREAM_VERSION_MINOR "0"
00268 #define GLOOX_VERSION "0.7.5"
00269
00276 namespace gloox
00277 {
00278
00282 enum ConnectionState
00283 {
00284 STATE_DISCONNECTED,
00285 STATE_CONNECTING,
00286 STATE_CONNECTED
00288 };
00289
00293 enum ConnectionError
00294 {
00295 CONN_OK,
00296 CONN_STREAM_ERROR,
00297 CONN_STREAM_CLOSED,
00298 CONN_IO_ERROR,
00299 CONN_OUT_OF_MEMORY,
00300 CONN_NO_SUPPORTED_AUTH,
00301 CONN_TLS_FAILED,
00302 CONN_AUTHENTICATION_FAILED,
00304 CONN_USER_DISCONNECTED
00305 };
00306
00310 enum StreamError
00311 {
00312 ERROR_UNDEFINED,
00315 ERROR_BAD_FORMAT,
00321 ERROR_BAD_NAMESPACE_PREFIX,
00324 ERROR_CONFLICT,
00327 ERROR_CONNECTION_TIMEOUT,
00329 ERROR_HOST_GONE,
00332 ERROR_HOST_UNKNOWN,
00335 ERROR_IMPROPER_ADDRESSING,
00337 ERROR_INTERNAL_SERVER_ERROR,
00340 ERROR_INVALID_FROM,
00344 ERROR_INVALID_ID,
00346 ERROR_INVALID_NAMESPACE,
00350 ERROR_INVALID_XML,
00352 ERROR_NOT_AUTHORIZED,
00356 ERROR_POLICY_VIOLATION,
00359 ERROR_REMOTE_CONNECTION_FAILED,
00361 ERROR_RESOURCE_CONSTRAINT,
00363 ERROR_RESTRICTED_XML,
00366 ERROR_SEE_OTHER_HOST,
00371 ERROR_SYSTEM_SHUTDOWN,
00373 ERROR_UNDEFINED_CONDITION,
00376 ERROR_UNSUPPORTED_ENCODING,
00378 ERROR_UNSUPPORTED_STANZA_TYPE,
00380 ERROR_UNSUPPORTED_VERSION,
00384 ERROR_XML_NOT_WELL_FORMED
00386 };
00387
00391 enum StanzaType
00392 {
00393 STANZA_UNDEFINED,
00394 STANZA_IQ,
00395 STANZA_MESSAGE,
00396 STANZA_S10N,
00397 STANZA_PRESENCE
00398 };
00399
00403 enum StanzaSubType
00404 {
00405 STANZA_SUB_UNDEFINED,
00406 STANZA_IQ_GET,
00407 STANZA_IQ_SET,
00411 STANZA_IQ_RESULT,
00412 STANZA_IQ_ERROR,
00417 STANZA_PRES_UNAVAILABLE,
00421 STANZA_PRES_AVAILABLE,
00425 STANZA_PRES_PROBE,
00429 STANZA_PRES_ERROR,
00433 STANZA_S10N_SUBSCRIBE,
00437 STANZA_S10N_SUBSCRIBED,
00441 STANZA_S10N_UNSUBSCRIBE,
00445 STANZA_S10N_UNSUBSCRIBED,
00449 STANZA_MESSAGE_CHAT,
00455 STANZA_MESSAGE_ERROR,
00461 STANZA_MESSAGE_GROUPCHAT,
00469 STANZA_MESSAGE_HEADLINE,
00478 STANZA_MESSAGE_NORMAL
00485 };
00486
00490 enum StanzaErrorType
00491 {
00492 ST_TYPE_CANCEL,
00493 ST_TYPE_CONTINUE,
00494 ST_TYPE_MODIFY,
00495 ST_TYPE_AUTH,
00496 ST_TYPE_WAIT
00497 };
00498
00502 enum StanzaError
00503 {
00504 ST_ERROR_UNDEFINED = 0,
00505 ST_ERROR_BAD_REQUEST,
00509 ST_ERROR_CONFLICT,
00512 ST_ERROR_FEATURE_NOT_IMPLEMENTED,
00515 ST_ERROR_FORBIDDEN,
00517 ST_ERROR_GONE,
00521 ST_ERROR_INTERNAL_SERVER_ERROR,
00524 ST_ERROR_ITEM_NOT_FOUND,
00526 ST_ERROR_JID_MALFORMED,
00531 ST_ERROR_NOT_ACCEPTABLE,
00535 ST_ERROR_NOT_ALLOWED,
00537 ST_ERROR_NOT_AUTHORIZED,
00540 ST_ERROR_PAYMENT_REQUIRED,
00543 ST_ERROR_RECIPIENT_UNAVAILABLE,
00548 ST_ERROR_REDIRECT,
00553 ST_ERROR_REGISTRATION_REQUIRED,
00556 ST_ERROR_REMOTE_SERVER_NOT_FOUND,
00559 ST_ERROR_REMOTE_SERVER_TIMEOUT,
00563 ST_ERROR_RESOURCE_CONSTRAINT,
00565 ST_ERROR_SERVICE_UNAVAILABLE,
00567 ST_ERROR_SUBSCRIBTION_REQUIRED,
00570 ST_ERROR_UNDEFINED_CONDITION,
00574 ST_ERROR_UNEXPECTED_REQUEST
00577 };
00578
00582 enum PresenceStatus
00583 {
00584 PRESENCE_UNKNOWN,
00585 PRESENCE_AVAILABLE,
00586 PRESENCE_CHAT,
00587 PRESENCE_AWAY,
00588 PRESENCE_DND,
00589 PRESENCE_XA,
00591 PRESENCE_UNAVAILABLE
00592 };
00593
00597 enum CertStatus
00598 {
00599 CERT_OK = 0,
00600 CERT_INVALID = 1,
00601 CERT_SIGNER_UNKNOWN = 2,
00602 CERT_REVOKED = 4,
00603 CERT_EXPIRED = 8,
00604 CERT_NOT_ACTIVE = 16,
00605 CERT_WRONG_PEER = 32,
00607 CERT_SIGNER_NOT_CA = 64
00608 };
00609
00613 struct CertInfo
00614 {
00615 int status;
00616 bool chain;
00617 std::string issuer;
00618 std::string server;
00619 int date_from;
00620 int date_to;
00621 std::string protocol;
00622 std::string cipher;
00623 std::string mac;
00624 std::string compression;
00625 };
00626
00630 enum AuthenticationError
00631 {
00632 AUTH_ERROR_UNDEFINED,
00633 SASL_ABORTED,
00636 SASL_INCORRECT_ENCODING,
00641 SASL_INVALID_AUTHZID,
00646 SASL_INVALID_MECHANISM,
00649 SASL_MECHANISM_TOO_WEAK,
00653 SASL_NOT_AUTHORIZED,
00657 SASL_TEMPORARY_AUTH_FAILURE,
00660 NONSASL_CONFLICT,
00661 NONSASL_NOT_ACCEPTABLE,
00662 NONSASL_NOT_AUTHORIZED
00663 };
00664
00668 typedef std::list<std::string> StringList;
00669
00673 typedef std::map<std::string, std::string> StringMap;
00674
00675 }
00676
00677 #endif // GLOOX_H__