From 79fc11918a932cfa20abf489267f4d88b48c7bd1 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Thu, 27 Feb 2014 16:41:13 +0100 Subject: [PATCH] * net/dbus.el (dbus--init-bus): Declare function. (dbus-path-local, dbus-interface-local): New defconst. (dbus-init-bus): Use them. (dbus-return-values-table): Extend doc. (dbus-handle-bus-disconnect): Extend error message. --- lisp/ChangeLog | 8 ++++++++ lisp/net/dbus.el | 48 +++++++++++++++++++++++++++++++----------------- 2 files changed, 39 insertions(+), 17 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 07781adc191..ca8a2a97975 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2014-02-27 Michael Albinus + + * net/dbus.el (dbus--init-bus): Declare function. + (dbus-path-local, dbus-interface-local): New defconst. + (dbus-init-bus): Use them. + (dbus-return-values-table): Extend doc. + (dbus-handle-bus-disconnect): Extend error message. + 2014-02-27 Juanma Barranquero * subr.el (y-or-n-p): Fix double space issue in message. diff --git a/lisp/net/dbus.el b/lisp/net/dbus.el index 3500c84dde9..4d146a33248 100644 --- a/lisp/net/dbus.el +++ b/lisp/net/dbus.el @@ -35,7 +35,7 @@ ;; Declare used subroutines and variables. (declare-function dbus-message-internal "dbusbind.c") -(declare-function dbus-init-bus-1 "dbusbind.c") +(declare-function dbus--init-bus "dbusbind.c") (defvar dbus-message-type-invalid) (defvar dbus-message-type-method-call) (defvar dbus-message-type-method-return) @@ -55,6 +55,9 @@ (defconst dbus-path-dbus "/org/freedesktop/DBus" "The object path used to talk to the bus itself.") +(defconst dbus-path-local (concat dbus-path-dbus "/Local") + "The object path used in local/in-process-generated messages.") + ;; Default D-Bus interfaces. (defconst dbus-interface-dbus "org.freedesktop.DBus" @@ -129,6 +132,15 @@ See URL `http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interf ;; ;; +(defconst dbus-interface-local (concat dbus-interface-dbus ".Local") + "An interface whose methods can only be invoked by the local implementation.") + +;; +;; +;; +;; +;; + ;; Emacs defaults. (defconst dbus-service-emacs "org.gnu.Emacs" "The well known service name of Emacs.") @@ -167,15 +179,20 @@ caught in `condition-case' by `dbus-error'.") A key in this hash table is a list (:serial BUS SERIAL), like in `dbus-registered-objects-table'. BUS is either a Lisp symbol, `:system' or `:session', or a string denoting the bus address. -SERIAL is the serial number of the reply message.") +SERIAL is the serial number of the reply message. + +The value of an entry is a cons (STATE . RESULT). STATE can be +either `:pending' (we are still waiting for the result), +`:complete' (the result is available) or `:error' (the reply +message was an error message).") (defun dbus-call-method-handler (&rest args) "Handler for reply messages of asynchronous D-Bus message calls. It calls the function stored in `dbus-registered-objects-table'. The result will be made available in `dbus-return-values-table'." - (let* ((key (list :serial - (dbus-event-bus-name last-input-event) - (dbus-event-serial-number last-input-event))) + (let* ((key (list :serial + (dbus-event-bus-name last-input-event) + (dbus-event-serial-number last-input-event))) (result (gethash key dbus-return-values-table))) (when (consp result) (setcar result :complete) @@ -183,9 +200,9 @@ The result will be made available in `dbus-return-values-table'." (defun dbus-notice-synchronous-call-errors (ev er) "Detect errors resulting from pending synchronous calls." - (let* ((key (list :serial - (dbus-event-bus-name ev) - (dbus-event-serial-number ev))) + (let* ((key (list :serial + (dbus-event-bus-name ev) + (dbus-event-serial-number ev))) (result (gethash key dbus-return-values-table))) (when (consp result) (setcar result :error) @@ -1718,7 +1735,7 @@ pending at the time of disconnect to fail." nil nil value) - '(dbus-error "Bus disconnected")) + (list 'dbus-error "Bus disconnected" bus)) (push key keys-to-remove))) dbus-registered-objects-table) (dolist (key keys-to-remove) @@ -1745,14 +1762,11 @@ This can be used, if it is necessary to distinguish from another connection used in the same Emacs process, like the one established by GTK+. It should be used with care for at least the `:system' and `:session' buses, because other Emacs Lisp packages might already use -this connection to those buses. -" - (dbus-init-bus-1 bus private) - (dbus-register-signal bus nil - "/org/freedesktop/DBus/Local" - "org.freedesktop.DBus.Local" - "Disconnected" - #'dbus-handle-bus-disconnect)) +this connection to those buses." + (dbus--init-bus bus private) + (dbus-register-signal + bus nil dbus-path-local dbus-interface-local + "Disconnected" #'dbus-handle-bus-disconnect)) ;; Initialize `:system' and `:session' buses. This adds their file -- 2.39.2