Proposal and RFC: DAL, the Desktop Abstraction Layer
Wed Jan 19 09:31:43 PST 2005
Havoc Pennington wrote:
> On Wed, 2005-01-19 at 16:03 +0000, Jamie McCracken wrote:
>>>You should get a list of all services that export a particular interface
>>>and then activate the service you want. We should fix D-Bus if it
>>>doesn't do what we want or create another daemon that keeps track of
>>>these things. A spec which aims to be a standard should not try and
>>Thats what I asked for earlier in this thread but Havoc is reluctant to
>>implement that and not wishing to upset Havoc I accepted the compromise
>>of multiple services for that.
>>I agree its much better to use interfaces here than services after all
>>an interface is an agreed well defined contract so it seems pointless to
>>make a service a well defined contract too in those cases. I should also
>>add that only public (pre-defined) interfaces should be exported as you
>>suggested (theres obviously no point asking for a propriety interface).
> As soon as someone explains how an application (rather than an object
> instance) can implement an interface, then I'm happy to listen.
> In the meantime you are suggesting the equivalent of this function:
> bool process_implements_gtk_editable (pid_t process_id);
> If you can explain how that makes any sense *at all* then I'm all ears.
> Processes are not editable text fields.
Firstly I'm not insisting on this functionality - Its okay with me to
have it implemented at the service level though I *prefer* to have it at
the interface level as thats more consistent with what im used to namely
COM (and Corba too) and it avoids all the confusion between interfaces
A COM server is an application and it implements interfaces. The concept
of object instances is not really relevant because the COM server's
interfaces are a contract and you dont have any knowledge of whether any
actual instances of the underlying objects exist. When a COM server is
activated all its interfaces are available - its not like some
interfaces are only available if a document is open rather its a case of
the COM server saying I dont have an open document therefore I cant
perform function X if an instance does not exist (EG if I tried to do a
word search and there was no open document, the text editor's search
method should return an error indicating there's no doc open). In
essence that means the interface is a separate object to the actual
object that performs the function on it. If it was not then obviously
you would seg fault if you called a method on an object that was not
instantiated. That does not and should not happen in COM so should it
not be the same with Dbus?
More information about the dbus