Mercurial > emacs
annotate lisp/net/dbus.el @ 87060:939b10a62bb1
(byte-compile-declare-function): Remove declared function from
byte-compile-noruntime-functions.
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Wed, 05 Dec 2007 03:35:39 +0000 |
parents | f767f1ba8301 |
children | 6cb7edfb2f4e |
rev | line source |
---|---|
86941
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
1 ;;; -*- no-byte-compile: t; -*- |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
2 ;;; dbus.el --- Elisp bindings for D-Bus. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
3 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
4 ;; Copyright (C) 2007 Free Software Foundation, Inc. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
5 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
6 ;; Author: Michael Albinus <michael.albinus@gmx.de> |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
7 ;; Keywords: comm, hardware |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
8 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
9 ;; This file is part of GNU Emacs. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
10 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
11 ;; GNU Emacs is free software; you can redistribute it and/or modify |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
12 ;; it under the terms of the GNU General Public License as published by |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
13 ;; the Free Software Foundation; either version 3, or (at your option) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
14 ;; any later version. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
15 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
16 ;; GNU Emacs is distributed in the hope that it will be useful, |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
19 ;; GNU General Public License for more details. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
20 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
21 ;; You should have received a copy of the GNU General Public License |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
22 ;; along with GNU Emacs; see the file COPYING. If not, see |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
23 ;; <http://www.gnu.org/licenses/>. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
24 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
25 ;;; Commentary: |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
26 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
27 ;; This package provides language bindings for the D-Bus API. D-Bus |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
28 ;; is a message bus system, a simple way for applications to talk to |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
29 ;; one another. See <http://dbus.freedesktop.org/> for details. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
30 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
31 ;; Low-level language bindings are implemented in src/dbusbind.c. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
32 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
33 ;;; Code: |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
34 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
35 (require 'xml) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
36 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
37 (defconst dbus-service-dbus "org.freedesktop.DBus" |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
38 "The bus name used to talk to the bus itself.") |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
39 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
40 (defconst dbus-path-dbus "/org/freedesktop/DBus" |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
41 "The object path used to talk to the bus itself.") |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
42 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
43 (defconst dbus-interface-dbus "org.freedesktop.DBus" |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
44 "The interface exported by the object with `dbus-service-dbus' and `dbus-path-dbus'.") |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
45 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
46 (defconst dbus-interface-introspectable "org.freedesktop.DBus.Introspectable" |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
47 "The interface supported by introspectable objects.") |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
48 |
87050
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
49 |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
50 ;;; Hash table of registered functions. |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
51 |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
52 (defun dbus-hash-table= (x y) |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
53 "Compares keys X and Y in the hash table of registered functions for D-Bus. |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
54 See `dbus-registered-functions-table' for a description of the hash table." |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
55 (and |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
56 (listp x) (listp y) |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
57 ;; Bus symbol, either :system or :session. |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
58 (symbolp (car x)) (symbolp (car y)) (equal (car x) (car y)) |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
59 ;; Interface. |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
60 (stringp (cadr x)) (stringp (cadr y)) (string-equal (cadr x) (cadr y)) |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
61 ;; Member. |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
62 (stringp (caddr x)) (stringp (caddr y)) (string-equal (caddr x) (caddr y)))) |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
63 |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
64 (define-hash-table-test 'dbus-hash-table-test |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
65 'dbus-hash-table= 'sxhash) |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
66 |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
67 (setq dbus-registered-functions-table |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
68 (make-hash-table :test 'dbus-hash-table-test)) |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
69 |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
70 |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
71 ;;; D-Bus events. |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
72 |
86941
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
73 (defun dbus-check-event (event) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
74 "Checks whether EVENT is a well formed D-Bus event. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
75 EVENT is a list which starts with symbol `dbus-event': |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
76 |
87050
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
77 (dbus-event HANDLER BUS SERVICE PATH INTERFACE MEMBER &rest ARGS) |
86941
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
78 |
87050
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
79 HANDLER is the function which has been registered for this |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
80 signal. BUS identifies the D-Bus the signal is coming from. It |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
81 is either the symbol `:system' or the symbol `:session'. SERVICE |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
82 and PATH are the name and the object path of the D-Bus object |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
83 emitting the signal. INTERFACE and MEMBER denote the signal |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
84 which has been sent. ARGS are the arguments passed to HANDLER, |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
85 when it is called during event handling in `dbus-handle-event'. |
86941
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
86 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
87 This function raises a `dbus-error' signal in case the event is |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
88 not well formed." |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
89 (when dbus-debug (message "DBus-Event %s" event)) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
90 (unless (and (listp event) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
91 (eq (car event) 'dbus-event) |
87050
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
92 ;; Handler. |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
93 (functionp (nth 1 event)) |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
94 ;; Bus symbol. |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
95 (symbolp (nth 2 event)) |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
96 ;; Service. |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
97 (stringp (nth 3 event)) |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
98 ;; Object path. |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
99 (stringp (nth 4 event)) |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
100 ;; Interface. |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
101 (stringp (nth 5 event)) |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
102 ;; Member. |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
103 (stringp (nth 6 event))) |
86941
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
104 (signal 'dbus-error (list "Not a valid D-Bus event" event)))) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
105 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
106 ;;;###autoload |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
107 (defun dbus-handle-event (event) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
108 "Handle events from the D-Bus. |
87050
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
109 EVENT is a D-Bus event, see `dbus-check-event'. HANDLER, being |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
110 part of the event, is called with arguments ARGS." |
86941
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
111 (interactive "e") |
87050
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
112 ;; We don't want to raise an error, because this function is called |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
113 ;; in the event handling loop. |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
114 (condition-case nil |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
115 (progn |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
116 (dbus-check-event event) |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
117 (apply (cadr event) (nthcdr 7 event))) |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
118 (dbus-error))) |
86941
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
119 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
120 (defun dbus-event-bus-name (event) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
121 "Return the bus name the event is coming from. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
122 The result is either the symbol `:system' or the symbol `:session'. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
123 EVENT is a D-Bus event, see `dbus-check-event'. This function |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
124 raises a `dbus-error' signal in case the event is not well |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
125 formed." |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
126 (dbus-check-event event) |
87050
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
127 (nth 2 event)) |
86941
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
128 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
129 (defun dbus-event-service-name (event) |
87050
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
130 "Return the name of the D-Bus object the event is coming from. |
86941
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
131 The result is a string. EVENT is a D-Bus event, see `dbus-check-event'. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
132 This function raises a `dbus-error' signal in case the event is |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
133 not well formed." |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
134 (dbus-check-event event) |
87050
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
135 (nth 3 event)) |
86941
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
136 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
137 (defun dbus-event-path-name (event) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
138 "Return the object path of the D-Bus object the event is coming from. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
139 The result is a string. EVENT is a D-Bus event, see `dbus-check-event'. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
140 This function raises a `dbus-error' signal in case the event is |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
141 not well formed." |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
142 (dbus-check-event event) |
87050
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
143 (nth 4 event)) |
86941
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
144 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
145 (defun dbus-event-interface-name (event) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
146 "Return the interface name of the D-Bus object the event is coming from. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
147 The result is a string. EVENT is a D-Bus event, see `dbus-check-event'. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
148 This function raises a `dbus-error' signal in case the event is |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
149 not well formed." |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
150 (dbus-check-event event) |
87050
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
151 (nth 5 event)) |
86941
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
152 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
153 (defun dbus-event-member-name (event) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
154 "Return the member name the event is coming from. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
155 It is either a signal name or a method name. The result is is a |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
156 string. EVENT is a D-Bus event, see `dbus-check-event'. This |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
157 function raises a `dbus-error' signal in case the event is not |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
158 well formed." |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
159 (dbus-check-event event) |
87050
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
160 (nth 6 event)) |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
161 |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
162 |
7d80e0f3d8f8
* net/dbus.el (dbus-hash-table=): New defun.
Michael Albinus <michael.albinus@gmx.de>
parents:
86941
diff
changeset
|
163 ;;; D-Bus registered names. |
86941
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
164 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
165 (defun dbus-list-activatable-names () |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
166 "Return the D-Bus service names which can be activated as list. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
167 The result is a list of strings, which is nil when there are no |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
168 activatable service names at all." |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
169 (condition-case nil |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
170 (dbus-call-method |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
171 :system "ListActivatableNames" dbus-service-dbus |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
172 dbus-path-dbus dbus-interface-dbus) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
173 (dbus-error))) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
174 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
175 (defun dbus-list-names (bus) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
176 "Return the service names registered at D-Bus BUS. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
177 The result is a list of strings, which is nil when there are no |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
178 registered service names at all. Well known names are strings like |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
179 \"org.freedesktop.DBus\". Names starting with \":\" are unique names |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
180 for services." |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
181 (condition-case nil |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
182 (dbus-call-method |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
183 bus "ListNames" dbus-service-dbus dbus-path-dbus dbus-interface-dbus) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
184 (dbus-error))) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
185 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
186 (defun dbus-list-known-names (bus) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
187 "Retrieve all services which correspond to a known name in BUS. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
188 A service has a known name if it doesn't start with \":\"." |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
189 (let (result) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
190 (dolist (name (dbus-list-names bus) result) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
191 (unless (string-equal ":" (substring name 0 1)) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
192 (add-to-list 'result name 'append))))) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
193 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
194 (defun dbus-list-queued-owners (bus service) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
195 "Return the unique names registered at D-Bus BUS and queued for SERVICE. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
196 The result is a list of strings, or nil when there are no queued name |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
197 owners service names at all." |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
198 (condition-case nil |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
199 (dbus-call-method |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
200 bus "ListQueuedOwners" dbus-service-dbus |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
201 dbus-path-dbus dbus-interface-dbus service) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
202 (dbus-error))) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
203 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
204 (defun dbus-get-name-owner (bus service) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
205 "Return the name owner of SERVICE registered at D-Bus BUS. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
206 The result is either a string, or nil if there is no name owner." |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
207 (condition-case nil |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
208 (dbus-call-method |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
209 bus "GetNameOwner" dbus-service-dbus |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
210 dbus-path-dbus dbus-interface-dbus service) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
211 (dbus-error))) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
212 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
213 (defun dbus-introspect (bus service path) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
214 "Return the introspection data of SERVICE in D-Bus BUS at object path PATH. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
215 The data are in XML format. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
216 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
217 Example: |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
218 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
219 \(dbus-introspect |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
220 :system \"org.freedesktop.Hal\" |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
221 \"/org/freedesktop/Hal/devices/computer\"))" |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
222 (condition-case nil |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
223 (dbus-call-method |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
224 bus "Introspect" service path dbus-interface-introspectable) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
225 (dbus-error))) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
226 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
227 (if nil ;; Must be reworked. Shall we offer D-Bus signatures at all? |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
228 (defun dbus-get-signatures (bus interface signal) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
229 "Retrieve SIGNAL's type signatures from D-Bus. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
230 The result is a list of SIGNAL's type signatures. Example: |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
231 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
232 \(\"s\" \"b\" \"ai\"\) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
233 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
234 This list represents 3 parameters of SIGNAL. The first parameter |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
235 is of type string, the second parameter is of type boolean, and |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
236 the third parameter is of type array of integer. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
237 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
238 If INTERFACE or SIGNAL do not exist, or if they do not support |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
239 the D-Bus method org.freedesktop.DBus.Introspectable.Introspect, |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
240 the function returns nil." |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
241 (condition-case nil |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
242 (let ((introspect-xml |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
243 (with-temp-buffer |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
244 (insert (dbus-introspect bus interface)) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
245 (xml-parse-region (point-min) (point-max)))) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
246 node interfaces signals args result) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
247 ;; Get the root node. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
248 (setq node (xml-node-name introspect-xml)) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
249 ;; Get all interfaces. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
250 (setq interfaces (xml-get-children node 'interface)) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
251 (while interfaces |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
252 (when (string-equal (xml-get-attribute (car interfaces) 'name) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
253 interface) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
254 ;; That's the requested interface. Check for signals. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
255 (setq signals (xml-get-children (car interfaces) 'signal)) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
256 (while signals |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
257 (when (string-equal (xml-get-attribute (car signals) 'name) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
258 signal) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
259 ;; The signal we are looking for. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
260 (setq args (xml-get-children (car signals) 'arg)) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
261 (while args |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
262 (unless (xml-get-attribute (car args) 'type) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
263 ;; This shouldn't happen, let's escape. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
264 (signal 'dbus-error "")) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
265 ;; We append the signature. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
266 (setq |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
267 result (append result |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
268 (list (xml-get-attribute (car args) 'type)))) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
269 (setq args (cdr args))) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
270 (setq signals nil)) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
271 (setq signals (cdr signals))) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
272 (setq interfaces nil)) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
273 (setq interfaces (cdr interfaces))) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
274 result) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
275 ;; We ignore `dbus-error'. There might be no introspectable interface. |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
276 (dbus-error nil))) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
277 ) ;; (if nil ... |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
278 |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
279 (provide 'dbus) |
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
280 |
87053 | 281 ;; arch-tag: a47caf84-9162-4811-90cc-5d388e37b9bd |
86941
cbc23e728425
* net/dbus.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
282 ;;; dbus.el ends here |