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_ */