LASH strikes back
(Nedko Arnaudov`s blog)

I’m glad to announce that LASH support in ladish is now fully functional. Apps can be started at level “LASH” (the two others are L0 and L1). The LASH API/protocol provides three high-level commands - quit, save and restore. All three commands are implemented in ladish version of liblash, and ladishd (the ladish daemon) calls them when appropriate.

I’ve used D-Bus for IPC. The liblash implementation can be used standalone as well. Once the app initializes liblash, a D-Bus object is created. The object implements three methods that match the three commands mentioned above. During liblash initialization, a method call to ladishd is made to provide some parameters, of which only the process id (aka pid) is actually used by ladishd. The call does not wait for reply and does not care if it will succeed or not. Strictly speaking this initial registration call can be avoided by watching for new object registrations and querying the process id from the D-Bus bus daemon. I’ve chosen the manual registration approach because it was simpler to implement and because it does not have practical drawbacks.

Next step in supporting L2 protocols (LASH and jack-session) should be improved tracking of app save/restore and start/stop states. Intermediate states like “starting”, “stopping”, “registered”, “saving”, “saved”, “restoring” and “restored” app states will give useful visual feedback. Studios and projects also need to report “modified” state. They get modified when one changes connections and/or start/stop apps. Of course, apps need “modified” state as well but no existing session protocol allows apps to report whether their internal state is modified or not. It will be part of L3, hopefully before 2020.

If you want to try the LASH support, you have to use latest git version of ladish. If you find any issues - please report them.


Created: Thu Aug 04 04:46:00 +0300 2011

Valid XHTML 1.0 Strict Valid CSS!