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

List:       kde-pim
Subject:    Re: [Kde-pim] New feature: Hypervisor
From:       Volker Krause <vkrause () kde ! org>
Date:       2013-11-16 9:02:40
Message-ID: 5399151.F4AKqZOe23 () vkpc9
[Download RAW message or body]

On Thursday 10 October 2013 12:45:09 Daniel Vr=E1til wrote:
> On Thursday 03 of October 2013 12:48:31 Volker Krause wrote:
> > * Resuming agents
> > =

> > The tricky part is triggering this when needed. From the discussion so =
far
> > we seem to have the following scenarios:
> > =

> > (1) D-Bus calls: This includes sync requests for resources or changes to
> > the agent configuration. As Dan outlined we can intercept the well-known
> > calls by the already existing redirection through akonadi_control, and
> > start the agent on demand.
> > =

> > To cover even custom interfaces (e.g. the send later agent), there's the
> > following systemd-inspired crazy idea: Before shutting down an agent we
> > "clone" it's D-Bus interface in akonadi_control, and use that for
> > on-demand
> > starting similar to the approach for well-known methods described above.
> > qdbusviewer shows you can completely introspect the interface,
> > QMetaObjectBuilder & friends allow to create custom QMetaObjects, which
> > then could be exported via D-Bus again. Needs a bit of research to see =
if
> > that's actually feasible, and where the limitations are, but it would be
> > a nicely generic solution to any D-Bus call :)
> =

> Sounds crazy but it has been proven to work :-) I'm just wondering, wheth=
er
> it means that the agent has to be started when Akonadi starts so that
> server can take snapshot of the DBus interface? The interface could be
> cached, but then there could be problem with interface API changes after
> update.

Starting the agent once is the save fallback, we could ask agents to instal=
l =

their D-Bus XML files to avoid even that, as an additional optimization.

For detecting API changes we could rely on the agent executable mtime, a =

version number in the desktop file, etc. None of this is perfect (interface =

could change as part of a library, you might forget to update the desktop =

file, etc), but IMHO good enough. And once we start the agent due to an =

incoming call we can update our snapshot anyway.

regards,
Volker

_______________________________________________
KDE PIM mailing list kde-pim@kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/
[prev in list] [next in list] [prev in thread] [next in thread] 

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