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 {