Details vs Match On Args
Kimmo.Hamalainen at nokia.com
Kimmo.Hamalainen at nokia.com
Mon Jul 11 16:18:56 EST 2005
> -----Original Message-----
> From: dbus-bounces at lists.freedesktop.org
> [mailto:dbus-bounces at lists.freedesktop.org]On Behalf Of ext John (J5)
> Palmieri
> Sent: 08 July, 2005 18:49
> To: Hamalainen Kimmo (Nokia-M/Helsinki)
> Cc: dbus at lists.freedesktop.org
> Subject: RE: Details vs Match On Args
>
>
> On Fri, 2005-07-08 at 13:28 +0300, Kimmo.Hamalainen at nokia.com wrote:
> >
> > > -----Original Message-----
> > > From: dbus-bounces at lists.freedesktop.org
> > > [mailto:dbus-bounces at lists.freedesktop.org]On Behalf Of
> ext John (J5)
> > > Palmieri
> > > Sent: 07 July, 2005 22:23
> > > To: dbus at lists.freedesktop.org
> > > Subject: Details vs Match On Args
> > >
> > >
> > > I've been thinking about it a bit and I think we need to
> do a match on
> > > arguments instead of details.
> > >
> > > So it has been discussed adding filtering of messages based on
> > > arguments. We were either going to go with this or the
> details patch
> > > sent awhile ago to deal with signals waking up threads
> > > because matching
> > > was not granular enough [1].
> > >
> > > In my opinion I think we need to match on args to be more
> flexible and
> > > also add wildcard matching. The reason I want to do this is so a
> > > program can watch for specific names coming on the bus
> without getting
> > > deluged by all the names that attach to the bus. The
> > > wildcard matching
> > > would be for listening for specific namespaces such as
> > > listening for all
> > > names that start with org.freedesktop.* (more compelling would be
> > > org.gnome.Service.*). Matching on args also has the
> > > advantage of being
> > > instantly useful without having to think about what data would be
> > > relevant to place in a arbitrary details field.
> >
> > In Anders' patch, the daemon sets the detail argument's value for
> > ServiceOwnerChanged signals. I think this also allows using
> wildcards
> > normally when adding match for the signals, since the
> argument is handled
> > as any other argument in the match.
> >
> > I think for other (ordinary, client-made) signals, the
> detail argument would
> > normally simply be missing, unless clients decide to use it
> for something.
> >
> > The detail argument is only needed for the
> ServiceOwnerChanged signal,
> > because services can use naming schemes for filtering
> client-made signals.
> > (E.g. using different object path for each signal and using
> that in the
> > match.)
> >
> > BR, Kimmo
>
> However if we check arguments you could just pass it as an
> argument. It
> is more flexible and I don't see a reason to have both. In (Sevice|
> Name)OwnerChanged you already get the name of the service so why
> duplicate it?
Maybe the existence checking of the detail argument (attribute?) can
be done more efficiently in the future (instead of the current variable-sized
array of fields). Even though vectors and other dynamic data structures
seem to be the Glib way, D-BUS protocol could make some exceptions in the
future to e.g. allow checking for a valid message be done quickly (instead
of going along the slowish "Glib type checks" tradition).
Perhaps arguments should be reserved for non-protocol type of information, due
to their generic and less-optimised nature.
But, as D-BUS seems generally not to be the bottleneck, anyway is fine.
(Generic remark, not specifically related to the issue: It's always the old
"beauty" of design (or overengineering) vs. efficiency thing... Since D-BUS
does not use XML, it should always make sure to get the advantage from that
decision, and not end up implementing the same as XML provides.)
BR, Kimmo
>
> --
> John (J5) Palmieri <johnp at redhat.com>
>
> --
> dbus mailing list
> dbus at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dbus
>
More information about the dbus
mailing list