How to get the name of the caller of a method in glib-dbus
Till Wimmer
g4-lisz at tonarchiv.ch
Fri Aug 28 06:54:48 PDT 2009
Ali Abdallah schrieb:
> Till Wimmer wrote:
>> Hello,
>>
>> i wrote a daemon which exposes a method ("invoke") to the bus:
>>
>> dbus_g_object_type_install_info(...)
>> dbus_g_connection_register_g_object(...)
>>
>> This works fine.
>>
>> Now i'd like to find the unique connection name of the client who
>> calls the exposed method.
>>
> <method name="YourMethod">
> <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
> <arg....... >
> </method>
>
> Then the exposed method in your GObject can be like:
>
> method_name (YourObject, args, DBusGMethodInvocation *context)
>
> And from the context you get
> dbus_g_method_get_sender (context); /* The unique name */
>
> Don't forget to return something with dbus_g_method_return at the end.
>
> Hope this is what you want.
> Cheers,
> Ali.
Hi Ali,
thanks four your help!
The DBusGMethodInvocation * argument was the missing link because my
method looked like this before:
gboolean skypeapi_dbusobj_invoke(SkypeAPIDBusObj *obj, const char
*message, char **ret, GError **error) {
g_assert(obj != NULL);
obj->str_ret = [ some code here to get the response ];
*ret = obj->str_ret;
return TRUE;
}
Now i changed the methods XML to:
<node>
<interface name="com.Skype.API">
<!-- Method definition -->
<!-- char *Invoke(char *message) -->
<method name="Invoke">
<annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
<arg type="s" name="message" direction="in"/>
<arg type="s" name="str_ret" direction="out"/>
</method>
</interface>
</node>
How do i rewrite the skypeapi_dbusobj_invoke function with
dbus_g_method_return at the end?
Thanks,
Till
More information about the dbus
mailing list