[Pidgin] #3242: Dbus Signals Introspection
Pidgin
trac at pidgin.im
Thu Sep 20 14:03:34 EDT 2007
#3242: Dbus Signals Introspection
-------------------------+--------------------------------------------------
Reporter: sunya | Type: enhancement
Status: new | Priority: minor
Component: libpurple | Version: 2.2.0
Keywords: dbus signal | Pending: 0
-------------------------+--------------------------------------------------
At this moment, Pidgin is emiting a lot of signals at dbus. But to use
them, there's no way to introspect them.
The present implementation only covers methods introspection.
An improvement to this situation is to add Dbus Signals Introspection.
Signals are not organized as methods, and they are almost defined as
needed.
purple_signal_emit(purple_blist_get_handle(), "buddy-signed-on", buddy);
purple_signal_emit(purple_conversations_get_handle(), "buddy-typing",
gc->account, name);
purple_signal_emit(my_protocol, "jabber-sending-text", js->gc, &data);
So I worked to detect the most frequent signals (ex "WroteImMsg"), and
generated an include file to extended the original introspected xml.
It's very similar to python method detection, but oriented to recover only
the signals.
Now there's no easy way to recover the parameters, and must be hardcoded.
<signal name='AccountAdded'>
</signal>
<signal name='AccountAliasChanged'>
</signal>
<signal name='AccountConnecting'>
</signal>
<signal name='AccountDisabled'>
</signal>
<signal name='AccountEnabled'>
</signal>
...
<signal name='WritingImMsg'>
</signal>
<signal name='WroteChatMsg'>
</signal>
<signal name='WroteImMsg'>
<arg name='account' type='i' direction='in'/>
<arg name='who' type='s' direction='in'/>
<arg name='message' type='s' direction='in'/>
<arg name='conv' type='i'/>
</signal>
The generated file dbus-signal-types.inc must be included at static
"DBusMessage *purple_dbus_introspect(DBusMessage *message)" line 492 in
dbus-server.c.
As a future improvement, must be implemented a cleaner way to recover or
define signals that support parameters too.
Thanks
Sunya
--
Ticket URL: <http://developer.pidgin.im/ticket/3242>
Pidgin <http://pidgin.im>
Pidgin
More information about the Tracker
mailing list