[patch] gobject sender and pid

Ross Burton ross at burtonini.com
Mon Mar 13 14:20:25 PST 2006


On Mon, 2006-03-13 at 15:15 -0500, David Zeuthen wrote:
> On Mon, 2006-03-13 at 08:26 +0000, Ross Burton wrote:
> > On Mon, 2006-03-13 at 00:03 -0500, David Zeuthen wrote:
> > > Attached is a patch that enables the method handler on a GObject to
> > > figure out who the sender is. I'm not sure this is the best way to do
> > > this but I thought I'd send the patch anyway. I'd like to see this fixed
> > > as I really need to know the sender. Without this patch the glib
> > > bindings are not very useful for system bus stuff since you more often
> > > than not needs to know who you are talking to. 
> > 
> > If you server-side methods are async, then you can call:
> > 
> > gchar* dbus_g_method_get_sender (DBusGMethodInvocation *context);
> 
> Oh, do I just have to put some magic in my hand-written XML or how is
> this supposed to work? Please don't tell me that I have to write it by
> hand; it's so nice with the auto-generated glue.

Just add the Async annotation to your method:

    <method name="getBookView">
      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_AddressBook_Book_getBookView"/>
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="listener" type="o" direction="in"/>
      <arg name="query" type="s" direction="in"/>
      <arg name="fields" type="as" direction="in"/>
      <arg name="max_results" type="u" direction="in"/>
      <arg name="view" type="o" direction="out"/>
    </method>

Then your code looks a little like this:

static void
impl_AddressBook_Book_getBookView (EDataBook *book, const char *listener_path, const char *search, const char **fields, const guint max_results, DBusGMethodInvocation *context)
{
  ...
  const char* sender = dbus_g_method_get_sender (context);
  ...
  dbus_g_method_return (context, ...);  /* or actually do this async, in an idle handler or thread */
}

> The docs are a bit sparse so if anyone got a pointer, please tell me.

I thought I had expanded the annotations section, but obviously not
enough. :)

Ross
-- 
Ross Burton                                 mail: ross at burtonini.com
                                          jabber: ross at burtonini.com
                                     www: http://www.burtonini.com./
 PGP Fingerprint: 1A21 F5B0 D8D0 CFE3 81D4 E25A 2D09 E447 D0B4 33DF





More information about the dbus mailing list