Mercurial > pidgin
comparison libpurple/protocols/jabber/jabber.h @ 15373: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 |
comparison
equal
deleted
inserted
replaced
15372:f79e0f4df793 | 15373:5fe8042783c1 |
---|---|
1 /** | |
2 * @file jabber.h | |
3 * | |
4 * gaim | |
5 * | |
6 * Copyright (C) 2003 Nathan Walp <faceprint@faceprint.com> | |
7 * | |
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. | |
12 * | |
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. | |
17 * | |
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 | |
21 */ | |
22 #ifndef _GAIM_JABBER_H_ | |
23 #define _GAIM_JABBER_H_ | |
24 | |
25 #include <libxml/parser.h> | |
26 #include <glib.h> | |
27 #include "circbuffer.h" | |
28 #include "connection.h" | |
29 #include "dnssrv.h" | |
30 #include "roomlist.h" | |
31 #include "sslconn.h" | |
32 | |
33 #include "jutil.h" | |
34 #include "xmlnode.h" | |
35 | |
36 #ifdef HAVE_CYRUS_SASL | |
37 #include <sasl/sasl.h> | |
38 #endif | |
39 | |
40 #define CAPS0115_NODE "http://gaim.sf.net/caps" | |
41 | |
42 typedef enum { | |
43 JABBER_CAP_NONE = 0, | |
44 JABBER_CAP_XHTML = 1 << 0, | |
45 JABBER_CAP_COMPOSING = 1 << 1, | |
46 JABBER_CAP_SI = 1 << 2, | |
47 JABBER_CAP_SI_FILE_XFER = 1 << 3, | |
48 JABBER_CAP_BYTESTREAMS = 1 << 4, | |
49 JABBER_CAP_IBB = 1 << 5, | |
50 JABBER_CAP_CHAT_STATES = 1 << 6, | |
51 JABBER_CAP_IQ_SEARCH = 1 << 7, | |
52 JABBER_CAP_IQ_REGISTER = 1 << 8, | |
53 | |
54 /* Google Talk extensions: | |
55 * http://code.google.com/apis/talk/jep_extensions/extensions.html | |
56 */ | |
57 JABBER_CAP_GMAIL_NOTIFY = 1 << 9, | |
58 JABBER_CAP_GOOGLE_ROSTER = 1 << 10, | |
59 | |
60 JABBER_CAP_RETRIEVED = 1 << 31 | |
61 } JabberCapabilities; | |
62 | |
63 typedef enum { | |
64 JABBER_STREAM_OFFLINE, | |
65 JABBER_STREAM_CONNECTING, | |
66 JABBER_STREAM_INITIALIZING, | |
67 JABBER_STREAM_AUTHENTICATING, | |
68 JABBER_STREAM_REINITIALIZING, | |
69 JABBER_STREAM_CONNECTED | |
70 } JabberStreamState; | |
71 | |
72 typedef struct _JabberStream | |
73 { | |
74 int fd; | |
75 | |
76 GaimSrvQueryData *srv_query_data; | |
77 | |
78 xmlParserCtxt *context; | |
79 xmlnode *current; | |
80 | |
81 enum { | |
82 JABBER_PROTO_0_9, | |
83 JABBER_PROTO_1_0 | |
84 } protocol_version; | |
85 enum { | |
86 JABBER_AUTH_UNKNOWN, | |
87 JABBER_AUTH_DIGEST_MD5, | |
88 JABBER_AUTH_PLAIN, | |
89 JABBER_AUTH_IQ_AUTH, | |
90 JABBER_AUTH_CYRUS | |
91 } auth_type; | |
92 char *stream_id; | |
93 JabberStreamState state; | |
94 | |
95 /* SASL authentication */ | |
96 char *expected_rspauth; | |
97 | |
98 GHashTable *buddies; | |
99 gboolean roster_parsed; | |
100 | |
101 GHashTable *chats; | |
102 GList *chat_servers; | |
103 GaimRoomlist *roomlist; | |
104 GList *user_directories; | |
105 | |
106 GHashTable *iq_callbacks; | |
107 GHashTable *disco_callbacks; | |
108 int next_id; | |
109 | |
110 | |
111 GList *oob_file_transfers; | |
112 GList *file_transfers; | |
113 | |
114 time_t idle; | |
115 | |
116 JabberID *user; | |
117 GaimConnection *gc; | |
118 GaimSslConnection *gsc; | |
119 | |
120 gboolean registration; | |
121 | |
122 char *avatar_hash; | |
123 GSList *pending_avatar_requests; | |
124 | |
125 GSList *pending_buddy_info_requests; | |
126 | |
127 GaimCircBuffer *write_buffer; | |
128 guint writeh; | |
129 | |
130 gboolean reinit; | |
131 | |
132 JabberCapabilities server_caps; | |
133 gboolean googletalk; | |
134 char *server_name; | |
135 | |
136 char *gmail_last_time; | |
137 char *gmail_last_tid; | |
138 | |
139 /* OK, this stays at the end of the struct, so plugins can depend | |
140 * on the rest of the stuff being in the right place | |
141 */ | |
142 #ifdef HAVE_CYRUS_SASL | |
143 sasl_conn_t *sasl; | |
144 sasl_callback_t *sasl_cb; | |
145 int sasl_state; | |
146 int sasl_maxbuf; | |
147 GString *sasl_mechs; | |
148 #endif | |
149 | |
150 } JabberStream; | |
151 | |
152 void jabber_process_packet(JabberStream *js, xmlnode *packet); | |
153 void jabber_send(JabberStream *js, xmlnode *data); | |
154 void jabber_send_raw(JabberStream *js, const char *data, int len); | |
155 | |
156 void jabber_stream_set_state(JabberStream *js, JabberStreamState state); | |
157 | |
158 void jabber_register_parse(JabberStream *js, xmlnode *packet); | |
159 void jabber_register_start(JabberStream *js); | |
160 | |
161 char *jabber_get_next_id(JabberStream *js); | |
162 | |
163 char *jabber_parse_error(JabberStream *js, xmlnode *packet); | |
164 | |
165 #endif /* _GAIM_JABBER_H_ */ |