test suite failure - more detail ...
Michael Meeks
michael at ximian.com
Mon Mar 29 07:09:55 PST 2004
Hi Olivier,
On Thu, 2004-03-25 at 18:55 +0100, Olivier Andrieu wrote:
> Hmm I wonder if this test ever passed :)
;-)
> Apparently, the test-dbus-glib is waiting for a "Foo" signal to be
> emitted by test-service. But the gproxy delivers signals only when the
> incoming message match the same (service, path, interface) triplet
> than what was set when the proxy is created.
>
> Here the proxy is created for the
> "org.freedesktop.DBus.TestSuiteEchoService" service but when the
> signal message arrives, it has the base service in its sender header.
> So, no match, no signal.
Right; so - since I didn't understand this - I added some debugging to
print the relevant tri-strings; and got:
dbus-gproxy.c (dbus_gproxy_manager_register):
register:
'org.freedesktop.DBus.TestSuiteEchoService,/org/freedesktop/TestSuite,org.freedesktop.TestSuite'
and then during the Foo emissions I got: (dbus_gproxy_manager_filter)
proxy got :1.1,/org/freedesktop/TestSuite,org.freedesktop.TestSuite =
list (nil)
So - the root cause us ':1.1' != 'org....'; so I know not what the
correct solution is; either
a) the bus should fill out ':1.1' as the service 'o.f.D.T'
b) the client should fill out ':1.1' as the service name
(it knows who it is)
c) the client should not register a specific service-name,
[ but then it shouldn't register :1.1 either I guess ].
d) the gproxy code should hash only on the latter 2 strings
in the tri-string, and sloppy match against the first.
e) the hash function should (could) do some looser matching
funkiness.
> It should work with dbus_gproxy_new_for_service_owner but it's not
> implemented yet !
I'm guessing this is going to be a common problem though; surely, if
emitted events don't have the service name, but a numerical handle
instead ?
Regards,
Michael.
--
michael at ximian.com <><, Pseudo Engineer, itinerant idiot
More information about the dbus
mailing list