[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    Re: DBus/QtDBus Concerns
From:       Thomas Zander <zander () kde ! org>
Date:       2006-07-16 0:31:43
Message-ID: 200607160231.47927.zander () kde ! org
[Download RAW message or body]


On Saturday 15 July 2006 20:27, Gary Cramblitt wrote:
> Use Case "Joseph"
[snip]
> I agree with both of these assessments, so one of the things I'm trying
> to do    with KTTS in KDE4 is improve the API so that operations are
> more intuitive for users while keeping the API simple for application
> developers.   To accomplish this, KTTSD must know from which
> applications the service requests are coming.

This usecase refers to the idea of having a connection. Several clients 
can connect to one service and the service will have some 
connection-state as long as the client keeps the connection open.
The solution to have the application name is not the best solution; if 
only because that means you can not have two applications of the same 
name connect to the client.  Having two channel-windows open in 
konversation would be easiest to do with 2 connections instead of 
konversation doing some magic on multiplexing.

There is a suggestion to make (virtual) connections be native to dbus, and 
until that happens you can simulate this in a small layer on top of dbus 
as well.  For example, in a framework I wrote (pvr.net) I sent a unique 
random ID in the connecting packat from the client to the service. This 
will make the service create a Map with properties unique for that 
connection. I will keep using that same ID for that client until there is 
a connection problem and things timeout. Each time a packat comes in the 
corresponding Map object is fetched and passed to the layers above. 
Giving the impression of a real statefull connection.  Ok, this is a very 
very quick overview of how this can be solved better without knowing the 
client application name by introducing a layer on top of a 
connection-less protocol.  Much the same way that TCP/IP does on top of, 
for example, ethernet.


Use case Mary can be solved in much the same way; there is statefull 
connection that requested the special 'status' of system manager and only 
via that connection can a global pause be executed. This is implemented 
using a handshake (meaning; request status and await OK) allowing the 
service to deny a system manager request based on policy like allowing 
only one at a time.

Hope this helps you in solving this issue.
-- 
Thomas Zander

[Attachment #3 (application/pgp-signature)]

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic