emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Inclusion of dbus-proxy


From: Jan Moringen
Subject: Inclusion of dbus-proxy
Date: Sun, 22 Aug 2010 00:03:33 +0200

Hi,

I recently developed dbus-proxy, a framework that makes accessing remote
D-Bus objects from Emacs Lisp easier and more transparent than the
current `dbus-call-method' mechanism. Since I was encouraged to propose
it for inclusion in Emacs, I'm hereby doing so. Besides being attached,
the code is also available here:
http://bazaar.launchpad.net/~scymtym/+junk/dbus-proxy/files

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)

  ;; Connect to the device-event signal.
  (connect device-kit 'device-event
    (lambda (&rest args)
      (message "Device event %s" args)))

  ;; Enumerate subsystems.
  (enumerate-by-subsystem device-kit '("sound")))

This example creates a proxy object for the device kit D-Bus object and
uses its methods, properties and signals.

dbus-proxy uses D-Bus introspection information to dynamically create
classes and methods that reflect the structure of the remote interface
in Emacs Lisp as naturally as possible. For example, `describe-class'
can used to inspect the methods supported by a particular D-Bus object.

dbus-proxy consists of the following components:

+ dbus-proxy.el
  + public programming interface
  + interface analysis
  + proxy superclasses
  + code generation
  + unit tests
+ dbus-introspection.el
  + accessors for D-Bus introspection data
    (similar to those in dbus.el)
  + parsing of signature strings
  + unit tests

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?
+ 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
+ The unit tests use ert which is also not currently included in Emacs
+ The use of the cl library may or may not be acceptable

I have signed the copyright assignment for Emacs.

What do you think?

Kind regards,
Jan

Attachment: ChangeLog
Description: Text Data

Attachment: dbus-introspection.el
Description: Text Data

Attachment: dbus-proxy.el
Description: Text Data

Attachment: TODO
Description: Text document


reply via email to

[Prev in Thread] Current Thread [Next in Thread]