Mercurial > pidgin.yaz
comparison libpurple/protocols/jabber/libxmpp.c @ 26952:92565c8e1e3a
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Tue, 12 May 2009 05:49:34 +0000 |
parents | a4b59d72b94b |
children | f500336f9881 5afee99de904 |
comparison
equal
deleted
inserted
replaced
26951:329f5a43b68a | 26952:92565c8e1e3a |
---|---|
43 #include "pep.h" | 43 #include "pep.h" |
44 #include "usertune.h" | 44 #include "usertune.h" |
45 #include "caps.h" | 45 #include "caps.h" |
46 #include "data.h" | 46 #include "data.h" |
47 #include "ibb.h" | 47 #include "ibb.h" |
48 | |
49 PurplePlugin *jabber_plugin = NULL; | |
48 | 50 |
49 static PurplePluginProtocolInfo prpl_info = | 51 static PurplePluginProtocolInfo prpl_info = |
50 { | 52 { |
51 OPT_PROTO_CHAT_TOPIC | OPT_PROTO_UNIQUE_CHATNAME | OPT_PROTO_MAIL_CHECK | | 53 OPT_PROTO_CHAT_TOPIC | OPT_PROTO_UNIQUE_CHATNAME | OPT_PROTO_MAIL_CHECK | |
52 #ifdef HAVE_CYRUS_SASL | 54 #ifdef HAVE_CYRUS_SASL |
123 jabber_get_media_caps, /* get_media_caps */ | 125 jabber_get_media_caps, /* get_media_caps */ |
124 }; | 126 }; |
125 | 127 |
126 static gboolean load_plugin(PurplePlugin *plugin) | 128 static gboolean load_plugin(PurplePlugin *plugin) |
127 { | 129 { |
130 jabber_plugin = plugin; | |
131 | |
128 purple_signal_register(plugin, "jabber-receiving-xmlnode", | 132 purple_signal_register(plugin, "jabber-receiving-xmlnode", |
129 purple_marshal_VOID__POINTER_POINTER, NULL, 2, | 133 purple_marshal_VOID__POINTER_POINTER, NULL, 2, |
130 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), | 134 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), |
131 purple_value_new_outgoing(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); | 135 purple_value_new_outgoing(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); |
132 | 136 |
138 purple_signal_register(plugin, "jabber-sending-text", | 142 purple_signal_register(plugin, "jabber-sending-text", |
139 purple_marshal_VOID__POINTER_POINTER, NULL, 2, | 143 purple_marshal_VOID__POINTER_POINTER, NULL, 2, |
140 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), | 144 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), |
141 purple_value_new_outgoing(PURPLE_TYPE_STRING)); | 145 purple_value_new_outgoing(PURPLE_TYPE_STRING)); |
142 | 146 |
147 purple_signal_register(plugin, "jabber-receiving-message", | |
148 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER, | |
149 purple_value_new(PURPLE_TYPE_BOOLEAN), 6, | |
150 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), | |
151 purple_value_new(PURPLE_TYPE_STRING), /* type */ | |
152 purple_value_new(PURPLE_TYPE_STRING), /* id */ | |
153 purple_value_new(PURPLE_TYPE_STRING), /* from */ | |
154 purple_value_new(PURPLE_TYPE_STRING), /* to */ | |
155 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); | |
156 | |
157 purple_signal_register(plugin, "jabber-receiving-iq", | |
158 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER, | |
159 purple_value_new(PURPLE_TYPE_BOOLEAN), 5, | |
160 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), | |
161 purple_value_new(PURPLE_TYPE_STRING), /* type */ | |
162 purple_value_new(PURPLE_TYPE_STRING), /* id */ | |
163 purple_value_new(PURPLE_TYPE_STRING), /* from */ | |
164 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); | |
165 | |
166 purple_signal_register(plugin, "jabber-watched-iq", | |
167 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER, | |
168 purple_value_new(PURPLE_TYPE_BOOLEAN), 5, | |
169 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), | |
170 purple_value_new(PURPLE_TYPE_STRING), /* type */ | |
171 purple_value_new(PURPLE_TYPE_STRING), /* id */ | |
172 purple_value_new(PURPLE_TYPE_STRING), /* from */ | |
173 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); /* child */ | |
174 | |
175 purple_signal_register(plugin, "jabber-register-namespace-watcher", | |
176 purple_marshal_VOID__POINTER_POINTER_POINTER, | |
177 NULL, 2, | |
178 purple_value_new(PURPLE_TYPE_STRING), /* node */ | |
179 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */ | |
180 | |
181 purple_signal_register(plugin, "jabber-unregister-namespace-watcher", | |
182 purple_marshal_VOID__POINTER_POINTER_POINTER, | |
183 NULL, 2, | |
184 purple_value_new(PURPLE_TYPE_STRING), /* node */ | |
185 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */ | |
186 | |
187 purple_signal_connect(plugin, "jabber-register-namespace-watcher", | |
188 plugin, PURPLE_CALLBACK(jabber_iq_signal_register), NULL); | |
189 purple_signal_connect(plugin, "jabber-unregister-namespace-watcher", | |
190 plugin, PURPLE_CALLBACK(jabber_iq_signal_unregister), NULL); | |
191 | |
192 purple_signal_register(plugin, "jabber-receiving-presence", | |
193 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER, | |
194 purple_value_new(PURPLE_TYPE_BOOLEAN), 4, | |
195 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), | |
196 purple_value_new(PURPLE_TYPE_STRING), /* type */ | |
197 purple_value_new(PURPLE_TYPE_STRING), /* from */ | |
198 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); | |
199 | |
143 return TRUE; | 200 return TRUE; |
144 } | 201 } |
145 | 202 |
146 static gboolean unload_plugin(PurplePlugin *plugin) | 203 static gboolean unload_plugin(PurplePlugin *plugin) |
147 { | 204 { |
148 purple_signal_unregister(plugin, "jabber-receiving-xmlnode"); | 205 purple_signals_unregister_by_instance(plugin); |
149 | |
150 purple_signal_unregister(plugin, "jabber-sending-xmlnode"); | |
151 | |
152 purple_signal_unregister(plugin, "jabber-sending-text"); | |
153 | 206 |
154 /* reverse order of init_plugin */ | 207 /* reverse order of init_plugin */ |
155 jabber_bosh_uninit(); | 208 jabber_bosh_uninit(); |
156 jabber_data_uninit(); | 209 jabber_data_uninit(); |
157 jabber_si_uninit(); | 210 jabber_si_uninit(); |
164 jabber_unregister_commands(); | 217 jabber_unregister_commands(); |
165 | 218 |
166 /* Stay on target...stay on target... Almost there... */ | 219 /* Stay on target...stay on target... Almost there... */ |
167 jabber_uninit_plugin(); | 220 jabber_uninit_plugin(); |
168 | 221 |
222 jabber_plugin = NULL; | |
223 | |
169 return TRUE; | 224 return TRUE; |
170 } | 225 } |
171 | 226 |
172 static PurplePluginInfo info = | 227 static PurplePluginInfo info = |
173 { | 228 { |