Mercurial > pidgin.yaz
comparison libpurple/protocols/jabber/libxmpp.c @ 29957:a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
This would allow multiple plugins to use the jabber plugin /properly/
(and ref-counted!). Commands still need to be fixed.
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Tue, 09 Mar 2010 18:59:08 +0000 |
parents | 185677f47825 |
children | 93d32ecf3186 |
comparison
equal
deleted
inserted
replaced
29956:342ed5917f56 | 29957:a694731e8b3f |
---|---|
130 jabber_get_moods /* get_moods */ | 130 jabber_get_moods /* get_moods */ |
131 }; | 131 }; |
132 | 132 |
133 static gboolean load_plugin(PurplePlugin *plugin) | 133 static gboolean load_plugin(PurplePlugin *plugin) |
134 { | 134 { |
135 purple_signal_register(plugin, "jabber-receiving-xmlnode", | 135 jabber_plugin_init(plugin); |
136 purple_marshal_VOID__POINTER_POINTER, NULL, 2, | |
137 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), | |
138 purple_value_new_outgoing(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); | |
139 | |
140 purple_signal_register(plugin, "jabber-sending-xmlnode", | |
141 purple_marshal_VOID__POINTER_POINTER, NULL, 2, | |
142 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), | |
143 purple_value_new_outgoing(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); | |
144 | |
145 /* | |
146 * Do not remove this or the plugin will fail. Completely. You have been | |
147 * warned! | |
148 */ | |
149 purple_signal_connect_priority(plugin, "jabber-sending-xmlnode", | |
150 plugin, PURPLE_CALLBACK(jabber_send_signal_cb), | |
151 NULL, PURPLE_SIGNAL_PRIORITY_HIGHEST); | |
152 | |
153 purple_signal_register(plugin, "jabber-sending-text", | |
154 purple_marshal_VOID__POINTER_POINTER, NULL, 2, | |
155 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), | |
156 purple_value_new_outgoing(PURPLE_TYPE_STRING)); | |
157 | |
158 purple_signal_register(plugin, "jabber-receiving-message", | |
159 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER_POINTER, | |
160 purple_value_new(PURPLE_TYPE_BOOLEAN), 6, | |
161 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), | |
162 purple_value_new(PURPLE_TYPE_STRING), /* type */ | |
163 purple_value_new(PURPLE_TYPE_STRING), /* id */ | |
164 purple_value_new(PURPLE_TYPE_STRING), /* from */ | |
165 purple_value_new(PURPLE_TYPE_STRING), /* to */ | |
166 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); | |
167 | |
168 purple_signal_register(plugin, "jabber-receiving-iq", | |
169 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER, | |
170 purple_value_new(PURPLE_TYPE_BOOLEAN), 5, | |
171 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), | |
172 purple_value_new(PURPLE_TYPE_STRING), /* type */ | |
173 purple_value_new(PURPLE_TYPE_STRING), /* id */ | |
174 purple_value_new(PURPLE_TYPE_STRING), /* from */ | |
175 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); | |
176 | |
177 purple_signal_register(plugin, "jabber-watched-iq", | |
178 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER, | |
179 purple_value_new(PURPLE_TYPE_BOOLEAN), 5, | |
180 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), | |
181 purple_value_new(PURPLE_TYPE_STRING), /* type */ | |
182 purple_value_new(PURPLE_TYPE_STRING), /* id */ | |
183 purple_value_new(PURPLE_TYPE_STRING), /* from */ | |
184 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); /* child */ | |
185 | |
186 /* Modifying these? Look at jabber_init_plugin for the ipc versions */ | |
187 purple_signal_register(plugin, "jabber-register-namespace-watcher", | |
188 purple_marshal_VOID__POINTER_POINTER, | |
189 NULL, 2, | |
190 purple_value_new(PURPLE_TYPE_STRING), /* node */ | |
191 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */ | |
192 | |
193 purple_signal_register(plugin, "jabber-unregister-namespace-watcher", | |
194 purple_marshal_VOID__POINTER_POINTER, | |
195 NULL, 2, | |
196 purple_value_new(PURPLE_TYPE_STRING), /* node */ | |
197 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */ | |
198 | |
199 purple_signal_connect(plugin, "jabber-register-namespace-watcher", | |
200 plugin, PURPLE_CALLBACK(jabber_iq_signal_register), NULL); | |
201 purple_signal_connect(plugin, "jabber-unregister-namespace-watcher", | |
202 plugin, PURPLE_CALLBACK(jabber_iq_signal_unregister), NULL); | |
203 | |
204 purple_signal_register(plugin, "jabber-receiving-presence", | |
205 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER, | |
206 purple_value_new(PURPLE_TYPE_BOOLEAN), 4, | |
207 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), | |
208 purple_value_new(PURPLE_TYPE_STRING), /* type */ | |
209 purple_value_new(PURPLE_TYPE_STRING), /* from */ | |
210 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); | |
211 | 136 |
212 return TRUE; | 137 return TRUE; |
213 } | 138 } |
214 | 139 |
215 static gboolean unload_plugin(PurplePlugin *plugin) | 140 static gboolean unload_plugin(PurplePlugin *plugin) |
216 { | 141 { |
217 purple_signals_unregister_by_instance(plugin); | 142 jabber_plugin_uninit(plugin); |
218 | |
219 /* reverse order of init_plugin */ | |
220 jabber_bosh_uninit(); | |
221 jabber_data_uninit(); | |
222 jabber_si_uninit(); | |
223 jabber_ibb_uninit(); | |
224 /* PEP things should be uninit via jabber_pep_uninit, not here */ | |
225 jabber_pep_uninit(); | |
226 jabber_caps_uninit(); | |
227 jabber_iq_uninit(); | |
228 | |
229 jabber_unregister_commands(); | |
230 | |
231 /* Stay on target...stay on target... Almost there... */ | |
232 jabber_uninit_plugin(plugin); | |
233 | 143 |
234 return TRUE; | 144 return TRUE; |
235 } | 145 } |
236 | 146 |
237 static PurplePluginInfo info = | 147 static PurplePluginInfo info = |
400 "custom_smileys", TRUE); | 310 "custom_smileys", TRUE); |
401 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, | 311 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, |
402 option); | 312 option); |
403 | 313 |
404 my_protocol = plugin; | 314 my_protocol = plugin; |
405 jabber_init_plugin(plugin); | |
406 | 315 |
407 purple_prefs_remove("/plugins/prpl/jabber"); | 316 purple_prefs_remove("/plugins/prpl/jabber"); |
408 | 317 |
409 /* XXX - If any other plugin wants SASL this won't be good ... */ | 318 /* XXX - If any other plugin wants SASL this won't be good ... */ |
410 #ifdef HAVE_CYRUS_SASL | 319 #ifdef HAVE_CYRUS_SASL |
421 #ifdef _WIN32 | 330 #ifdef _WIN32 |
422 /* Restore the original error mode */ | 331 /* Restore the original error mode */ |
423 SetErrorMode(old_error_mode); | 332 SetErrorMode(old_error_mode); |
424 #endif | 333 #endif |
425 #endif | 334 #endif |
426 jabber_register_commands(); | |
427 | |
428 /* reverse order of unload_plugin */ | |
429 jabber_iq_init(); | |
430 jabber_caps_init(); | |
431 /* PEP things should be init via jabber_pep_init, not here */ | |
432 jabber_pep_init(); | |
433 jabber_data_init(); | |
434 jabber_bosh_init(); | |
435 | |
436 /* TODO: Implement adding and retrieving own features via IPC API */ | |
437 | |
438 jabber_ibb_init(); | |
439 jabber_si_init(); | |
440 | 335 |
441 purple_signal_connect(purple_get_core(), "uri-handler", plugin, | 336 purple_signal_connect(purple_get_core(), "uri-handler", plugin, |
442 PURPLE_CALLBACK(xmpp_uri_handler), NULL); | 337 PURPLE_CALLBACK(xmpp_uri_handler), NULL); |
443 } | 338 } |
444 | 339 |