Mercurial > pidgin.yaz
diff libpurple/protocols/jabber/jabber.h @ 15374:5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Sat, 20 Jan 2007 02:32:10 +0000 |
parents | |
children | 51dd9ae01585 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/protocols/jabber/jabber.h Sat Jan 20 02:32:10 2007 +0000 @@ -0,0 +1,165 @@ +/** + * @file jabber.h + * + * gaim + * + * Copyright (C) 2003 Nathan Walp <faceprint@faceprint.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef _GAIM_JABBER_H_ +#define _GAIM_JABBER_H_ + +#include <libxml/parser.h> +#include <glib.h> +#include "circbuffer.h" +#include "connection.h" +#include "dnssrv.h" +#include "roomlist.h" +#include "sslconn.h" + +#include "jutil.h" +#include "xmlnode.h" + +#ifdef HAVE_CYRUS_SASL +#include <sasl/sasl.h> +#endif + +#define CAPS0115_NODE "http://gaim.sf.net/caps" + +typedef enum { + JABBER_CAP_NONE = 0, + JABBER_CAP_XHTML = 1 << 0, + JABBER_CAP_COMPOSING = 1 << 1, + JABBER_CAP_SI = 1 << 2, + JABBER_CAP_SI_FILE_XFER = 1 << 3, + JABBER_CAP_BYTESTREAMS = 1 << 4, + JABBER_CAP_IBB = 1 << 5, + JABBER_CAP_CHAT_STATES = 1 << 6, + JABBER_CAP_IQ_SEARCH = 1 << 7, + JABBER_CAP_IQ_REGISTER = 1 << 8, + + /* Google Talk extensions: + * http://code.google.com/apis/talk/jep_extensions/extensions.html + */ + JABBER_CAP_GMAIL_NOTIFY = 1 << 9, + JABBER_CAP_GOOGLE_ROSTER = 1 << 10, + + JABBER_CAP_RETRIEVED = 1 << 31 +} JabberCapabilities; + +typedef enum { + JABBER_STREAM_OFFLINE, + JABBER_STREAM_CONNECTING, + JABBER_STREAM_INITIALIZING, + JABBER_STREAM_AUTHENTICATING, + JABBER_STREAM_REINITIALIZING, + JABBER_STREAM_CONNECTED +} JabberStreamState; + +typedef struct _JabberStream +{ + int fd; + + GaimSrvQueryData *srv_query_data; + + xmlParserCtxt *context; + xmlnode *current; + + enum { + JABBER_PROTO_0_9, + JABBER_PROTO_1_0 + } protocol_version; + enum { + JABBER_AUTH_UNKNOWN, + JABBER_AUTH_DIGEST_MD5, + JABBER_AUTH_PLAIN, + JABBER_AUTH_IQ_AUTH, + JABBER_AUTH_CYRUS + } auth_type; + char *stream_id; + JabberStreamState state; + + /* SASL authentication */ + char *expected_rspauth; + + GHashTable *buddies; + gboolean roster_parsed; + + GHashTable *chats; + GList *chat_servers; + GaimRoomlist *roomlist; + GList *user_directories; + + GHashTable *iq_callbacks; + GHashTable *disco_callbacks; + int next_id; + + + GList *oob_file_transfers; + GList *file_transfers; + + time_t idle; + + JabberID *user; + GaimConnection *gc; + GaimSslConnection *gsc; + + gboolean registration; + + char *avatar_hash; + GSList *pending_avatar_requests; + + GSList *pending_buddy_info_requests; + + GaimCircBuffer *write_buffer; + guint writeh; + + gboolean reinit; + + JabberCapabilities server_caps; + gboolean googletalk; + char *server_name; + + char *gmail_last_time; + char *gmail_last_tid; + + /* OK, this stays at the end of the struct, so plugins can depend + * on the rest of the stuff being in the right place + */ +#ifdef HAVE_CYRUS_SASL + sasl_conn_t *sasl; + sasl_callback_t *sasl_cb; + int sasl_state; + int sasl_maxbuf; + GString *sasl_mechs; +#endif + +} JabberStream; + +void jabber_process_packet(JabberStream *js, xmlnode *packet); +void jabber_send(JabberStream *js, xmlnode *data); +void jabber_send_raw(JabberStream *js, const char *data, int len); + +void jabber_stream_set_state(JabberStream *js, JabberStreamState state); + +void jabber_register_parse(JabberStream *js, xmlnode *packet); +void jabber_register_start(JabberStream *js); + +char *jabber_get_next_id(JabberStream *js); + +char *jabber_parse_error(JabberStream *js, xmlnode *packet); + +#endif /* _GAIM_JABBER_H_ */