Discovering services
Tako Schotanus
quintesse at palacio-cristal.com
Fri Jul 7 15:07:24 PDT 2006
Havoc Pennington wrote:
> Carlos Garcia Campos wrote:
>>
>> where should I add the test stuff? bus/test.c? I still don't know how
>> the tests work.
>
> I think bus/dispatch.c has most of the tests for the bus, in
> particular those that test OOM handling. You should be able to roughly
> just copy one of the other tests in there. It's a little bit tricky
> since it's all in one process, you have to avoid blocking when the
> other process hasn't sent something yet, or it hangs. Just do
> DBUS_VERBOSE=1 and look at what happens if your test doesn't work.
>
>>>> Is it possible to deactivate services or something like that?
>>> This is a pretty major can of worms. In general services should
>>> "self-deactivate" I would say - e.g. after a timeout, or when nobody
>>> is using them.
>>
>> Exactly, when nobody is using them, but how can a service know when it's
>> not going to be used anymore? Maybe a generic interface, with ref/unref
>> methods that services could implement would be a solution.
>
> Some reasonable approaches are:
> - time out and exit after being unused for a while
> - require clients to register/unregister (and track if any
> clients disconnect without unregistering, to avoid leaks)
>
> Distributed reference counting has lots of problems so we've tried to
> avoid that. Eventually we might want some kind of generic
> register/unregister mechanism, but it's not clear to me what that
> would be like, so right now everyone is rolling their own suitable for
> their needs.
>
Ok but this still won't work very well for those examples you gave
before where a service might actually open a window or start a user
visible application or something, won't it?
Wouldn't that imply that activation should not be done automatically
when only asking for introspection?
-Tako
More information about the dbus
mailing list