Mercurial > pidgin.yaz
annotate src/protocols/jabber/jabber.h @ 13808:34d086c78a0d
[gaim-migrate @ 16234]
Use libxml2 on win32 too.
This increases the installer size by ~400K (oh well).
committer: Tailor Script <tailor@pidgin.im>
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Thu, 08 Jun 2006 15:13:39 +0000 |
parents | 25e63008d3bb |
children | 614c56622453 |
rev | line source |
---|---|
7014 | 1 /** |
2 * @file jabber.h | |
3 * | |
4 * gaim | |
5 * | |
6 * Copyright (C) 2003 Nathan Walp <faceprint@faceprint.com> | |
2086 | 7 * |
7014 | 8 * This program is free software; you can redistribute it and/or modify |
9 * it under the terms of the GNU General Public License as published by | |
10 * the Free Software Foundation; either version 2 of the License, or | |
11 * (at your option) any later version. | |
2086 | 12 * |
7014 | 13 * This program is distributed in the hope that it will be useful, |
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 * GNU General Public License for more details. | |
2086 | 17 * |
7014 | 18 * You should have received a copy of the GNU General Public License |
19 * along with this program; if not, write to the Free Software | |
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
2086 | 21 */ |
7014 | 22 #ifndef _GAIM_JABBER_H_ |
23 #define _GAIM_JABBER_H_ | |
2086 | 24 |
13806 | 25 #ifdef HAVE_LIBXML |
26 #include <libxml/parser.h> | |
27 #endif | |
7014 | 28 #include <glib.h> |
29 #include "connection.h" | |
8113 | 30 #include "roomlist.h" |
7014 | 31 #include "sslconn.h" |
13200
33bef17125c2
[gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12508
diff
changeset
|
32 #include "gaim_buffer.h" |
2086 | 33 |
7014 | 34 #include "jutil.h" |
35 #include "xmlnode.h" | |
2086 | 36 |
12508 | 37 #ifdef HAVE_CYRUS_SASL |
38 #include <sasl/sasl.h> | |
39 #endif | |
40 | |
13384 | 41 #define CAPS0115_NODE "http://gaim.sf.net/caps" |
42 | |
7014 | 43 typedef enum { |
8312 | 44 JABBER_CAP_NONE = 0, |
45 JABBER_CAP_XHTML = 1 << 0, | |
46 JABBER_CAP_COMPOSING = 1 << 1, | |
47 JABBER_CAP_SI = 1 << 2, | |
48 JABBER_CAP_SI_FILE_XFER = 1 << 3, | |
49 JABBER_CAP_BYTESTREAMS = 1 << 4, | |
50 JABBER_CAP_IBB = 1 << 5, | |
11393 | 51 JABBER_CAP_CHAT_STATES = 1 << 6, |
11675 | 52 JABBER_CAP_IQ_SEARCH = 1 << 7, |
53 JABBER_CAP_IQ_REGISTER = 1 << 8, | |
8312 | 54 JABBER_CAP_RETRIEVED = 1 << 31 |
55 } JabberCapabilities; | |
56 | |
57 typedef enum { | |
7014 | 58 JABBER_STREAM_OFFLINE, |
59 JABBER_STREAM_CONNECTING, | |
60 JABBER_STREAM_INITIALIZING, | |
61 JABBER_STREAM_AUTHENTICATING, | |
62 JABBER_STREAM_REINITIALIZING, | |
63 JABBER_STREAM_CONNECTED | |
64 } JabberStreamState; | |
2086 | 65 |
7014 | 66 typedef struct _JabberStream |
2086 | 67 { |
7014 | 68 int fd; |
2086 | 69 |
13806 | 70 #ifdef HAVE_LIBXML |
71 xmlParserCtxt *context; | |
72 #else | |
7014 | 73 GMarkupParseContext *context; |
13806 | 74 #endif |
7014 | 75 xmlnode *current; |
2086 | 76 |
7014 | 77 enum { |
78 JABBER_PROTO_0_9, | |
79 JABBER_PROTO_1_0 | |
80 } protocol_version; | |
7291 | 81 enum { |
8296 | 82 JABBER_AUTH_UNKNOWN, |
7291 | 83 JABBER_AUTH_DIGEST_MD5, |
8296 | 84 JABBER_AUTH_PLAIN, |
12508 | 85 JABBER_AUTH_IQ_AUTH, |
86 JABBER_AUTH_CYRUS | |
7291 | 87 } auth_type; |
7014 | 88 char *stream_id; |
89 JabberStreamState state; | |
2086 | 90 |
7014 | 91 /* SASL authentication */ |
92 char *expected_rspauth; | |
2086 | 93 |
7014 | 94 GHashTable *buddies; |
95 gboolean roster_parsed; | |
2086 | 96 |
7014 | 97 GHashTable *chats; |
8043 | 98 GList *chat_servers; |
8113 | 99 GaimRoomlist *roomlist; |
11675 | 100 GList *user_directories; |
2086 | 101 |
8312 | 102 GHashTable *iq_callbacks; |
103 GHashTable *disco_callbacks; | |
7014 | 104 int next_id; |
2086 | 105 |
8312 | 106 |
7395 | 107 GList *oob_file_transfers; |
7170 | 108 GList *file_transfers; |
109 | |
7014 | 110 time_t idle; |
2086 | 111 |
7014 | 112 JabberID *user; |
113 GaimConnection *gc; | |
114 GaimSslConnection *gsc; | |
7072 | 115 |
116 gboolean registration; | |
10189 | 117 |
118 char *avatar_hash; | |
10941 | 119 GSList *pending_avatar_requests; |
12508 | 120 |
13200
33bef17125c2
[gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12508
diff
changeset
|
121 GaimCircBuffer *write_buffer; |
33bef17125c2
[gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12508
diff
changeset
|
122 guint writeh; |
33bef17125c2
[gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
12508
diff
changeset
|
123 |
12508 | 124 /* OK, this stays at the end of the struct, so plugins can depend |
125 * on the rest of the stuff being in the right place | |
126 */ | |
127 #ifdef HAVE_CYRUS_SASL | |
128 sasl_conn_t *sasl; | |
129 sasl_callback_t *sasl_cb; | |
130 int sasl_state; | |
131 int sasl_maxbuf; | |
132 GString *sasl_mechs; | |
133 #endif | |
134 | |
7014 | 135 } JabberStream; |
2086 | 136 |
7014 | 137 void jabber_process_packet(JabberStream *js, xmlnode *packet); |
138 void jabber_send(JabberStream *js, xmlnode *data); | |
7642 | 139 void jabber_send_raw(JabberStream *js, const char *data, int len); |
2086 | 140 |
7014 | 141 void jabber_stream_set_state(JabberStream *js, JabberStreamState state); |
2086 | 142 |
7077 | 143 void jabber_register_parse(JabberStream *js, xmlnode *packet); |
8016 | 144 void jabber_register_start(JabberStream *js); |
7077 | 145 |
7014 | 146 char *jabber_get_next_id(JabberStream *js); |
2086 | 147 |
8401 | 148 char *jabber_parse_error(JabberStream *js, xmlnode *packet); |
149 | |
7014 | 150 #endif /* _GAIM_JABBER_H_ */ |