From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Michael Albinus Newsgroups: gmane.emacs.devel Subject: Re: Inclusion of dbus-proxy Date: Sun, 22 Aug 2010 18:20:36 +0200 Message-ID: <87aaoesjor.fsf@gmx.de> References: <4045_1282428217_ZZh07312bUcyR.00_1282428214.23884.594.camel@steed.robot-madness> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: dough.gmane.org 1282494256 21371 80.91.229.12 (22 Aug 2010 16:24:16 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sun, 22 Aug 2010 16:24:16 +0000 (UTC) Cc: emacs-devel@gnu.org To: Jan Moringen Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Aug 22 18:24:14 2010 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1OnDL6-0000gV-J9 for ged-emacs-devel@m.gmane.org; Sun, 22 Aug 2010 18:24:08 +0200 Original-Received: from localhost ([127.0.0.1]:47410 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OnDHv-0006yZ-Be for ged-emacs-devel@m.gmane.org; Sun, 22 Aug 2010 12:20:51 -0400 Original-Received: from [140.186.70.92] (port=41036 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OnDHm-0006vi-R0 for emacs-devel@gnu.org; Sun, 22 Aug 2010 12:20:43 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OnDHl-00067U-5I for emacs-devel@gnu.org; Sun, 22 Aug 2010 12:20:42 -0400 Original-Received: from mailout-de.gmx.net ([213.165.64.23]:57961 helo=mail.gmx.net) by eggs.gnu.org with smtp (Exim 4.69) (envelope-from ) id 1OnDHk-00066x-PX for emacs-devel@gnu.org; Sun, 22 Aug 2010 12:20:41 -0400 Original-Received: (qmail invoked by alias); 22 Aug 2010 16:20:37 -0000 Original-Received: from p4FC18357.dip0.t-ipconnect.de (EHLO arthur.gmx.de) [79.193.131.87] by mail.gmx.net (mp071) with SMTP; 22 Aug 2010 18:20:37 +0200 X-Authenticated: #3708877 X-Provags-ID: V01U2FsdGVkX18n+KxN+PUnqKghdhFpu6a8+EZVszoGbZDuTA7sD8 DaREZP+SOQwPW8 In-Reply-To: <4045_1282428217_ZZh07312bUcyR.00_1282428214.23884.594.camel@steed.robot-madness> (Jan Moringen's message of "Sun, 22 Aug 2010 00:03:33 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) X-Y-GMX-Trusted: 0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:129045 Archived-At: Jan Moringen writes: > Hi, Hi Jan, > I recently developed dbus-proxy, a framework that makes accessing remote > D-Bus objects from Emacs Lisp easier and more transparent than the I would call it "proxy D-Bus objects". The objects you are using reside on your local host. Accessing D-Bus objects on a remote host is a different thing. > current `dbus-call-method' mechanism. Since I was encouraged to propose > it for inclusion in Emacs, I'm hereby doing so. It's a nice idea I really appreciate. > Let me start with a simple example of how a typical usage of dbus-proxy > looks: > > (let ((device-kit (dbus-proxy-make-remote-proxy > :system > "org.freedesktop.DeviceKit" > "/org/freedesktop/DeviceKit"))) > > ;; Retrieve the daemon-version property. > (slot-value device-kit :daemon-version) > (oref device-kit :daemon-version) For people not familiar with eieio (like me) it would be helpful to explain what's happening here. > + dbus-introspection.el If such a module exists, dbus-introspection-* functions from dbus.el could be moved here. > I am aware of the following problems with respect to the inclusion in > Emacs: > + Names: > + Generated class names tend to be long and ugly and do not follow > usual Lisp conventions > + `connect' and `disconnect' may need a `dbus-proxy-' prefix? Yes. In general, every Lisp package should use its own namespace. > + The generated class hierarchies only work with the :c3 method > resolution order which was added to EIEIO upstream a few months ago > but does not seem to have been merged yet This shall be solved before adding your package. > + The unit tests use ert which is also not currently included in Emacs Maybe you cam move the unit tests to another package? > + The use of the cl library may or may not be acceptable You load it only during byte-compilation. That's OK I believe. > ;;; dbus-introspection.el --- Helper functions for D-Bus introspection > > ;; malformed-signature > > (intern "malformed-signature") What is this good for? The first use of an uninterned symbol adds it to the obarray. > (defconst dbus-proxy-simple-type-codes > (defun dbus-proxy-parse-simple-type (string) > (defun dbus-proxy-parse-composite-type (string) > (defun dbus-proxy-parse-type-list (string) There are already signature parsing functions in dbusbind.c. Maybe we could make them available on Lisp level; this could simplify your code. Furthermore, since we are in dbus-introspection.el, the functions shall not be prefixed dbus-proxy-* > ;;; dbus-proxy.el --- Automatic proxies for remote D-Bus objects > ;;; Commentary: > ;; > ;; Here is a basic example of the intended use: > ;; > ;; (let ((epiphany (dbus-proxy-make-remote-proxy > ;; :session > ;; "org.gnome.Epiphany" > ;; "/org/gnome/Epiphany"))) > ;; (open-bookmarks-editor epiphany 0)) You could be a little bit more verbose with the example. I suspect, that the `dbus-proxy-make-remote-proxy' call declares the function `open-bookmarks-editor', which has been retrieved as method from an existing interface at "/org/gnome/Epiphany". The following description of the algorithm tells it somehow, but it is not obvious. Maybe you could also contribute a section to dus.texi. Best regards, Michael.