This is probably a better question for the devel mailing list On 2010-07-20 10:19, Liangent wrote: > Hi, > > I'm listening to a signal in Python via DBus with the following code: > > def cb_jabber_receiving_message(gc, type, id, from_, to, message): > # some code ... > > bus.add_signal_receiver( > cb_jabber_receiving_message, > dbus_interface = 'im.pidgin.purple.PurpleInterface', > signal_name = 'JabberReceivingMessage', > ) > > I cannot figure out how the message argument can be used. I tried some > Xmlnode* functions exported via DBus, but they always fail with > "DBusException: im.pidgin.purple.InvalidHandle: xmlnode object with ID > = 729930 not found" (where 729930 is the value of message argument). I > guess the reason is that the xmlnode was freed before DBus function's > invoking, then how can I read the content of message?
You are correct that the xmlnode is going to be destroyed before libpurple gets around to processing your dbus request to fetch the xmlnode's data. Hmm, I thought there was a jabber-receiving-text signal, but it doesn't look like there is. If it existed, you could watch on that and parse the data yourself (ugly). OTOH, I can think of two "solutions", neither of which are great: * Develop your code as a native plugin (either C, Perl, or TCL), which have synchronous access to things like that xmlnode * Code up a shim plugin which *just* binds to the signals you care about, turns around and emits a new signal with the output of xmlnode_to_str(). Someone else may have a better idea or some other alternatives. ~Paul
signature.asc
Description: OpenPGP digital signature
_______________________________________________ [email protected] mailing list Want to unsubscribe? Use this link: http://pidgin.im/cgi-bin/mailman/listinfo/support
