Mercurial > emacs
comparison lisp/net/dbus.el @ 106050:533b0628d222
* net/dbus.el (dbus-unregister-service): New defun.
(dbus-register-property): Register the handlers for
"org.freedesktop.DBus.Properties" for SERVICE.
(dbus-property-handler): Fix docstring.
author | Michael Albinus <michael.albinus@gmx.de> |
---|---|
date | Mon, 16 Nov 2009 14:25:25 +0000 |
parents | 57d249deafab |
children | 98a65639e9cf |
comparison
equal
deleted
inserted
replaced
106049:c0e610eb8658 | 106050:533b0628d222 |
---|---|
180 (dbus-call-method | 180 (dbus-call-method |
181 bus dbus-service-dbus dbus-path-dbus dbus-interface-dbus | 181 bus dbus-service-dbus dbus-path-dbus dbus-interface-dbus |
182 "ReleaseName" service)))) | 182 "ReleaseName" service)))) |
183 ;; Return. | 183 ;; Return. |
184 ret)) | 184 ret)) |
185 | |
186 (defun dbus-unregister-service (bus service) | |
187 "Unregister all objects related to SERVICE from D-Bus BUS. | |
188 BUS must be either the symbol `:system' or the symbol `:session'. | |
189 SERVICE must be a known service name." | |
190 (maphash | |
191 (lambda (key value) | |
192 (dolist (elt value) | |
193 (ignore-errors | |
194 (when (and (equal bus (car key)) (string-equal service (cadr elt))) | |
195 (unless | |
196 (puthash key (delete elt value) dbus-registered-objects-table) | |
197 (remhash key dbus-registered-objects-table)))))) | |
198 dbus-registered-objects-table) | |
199 (dbus-call-method | |
200 bus dbus-service-dbus dbus-path-dbus dbus-interface-dbus | |
201 "ReleaseName" service)) | |
185 | 202 |
186 (defun dbus-call-method-non-blocking-handler (&rest args) | 203 (defun dbus-call-method-non-blocking-handler (&rest args) |
187 "Handler for reply messages of asynchronous D-Bus message calls. | 204 "Handler for reply messages of asynchronous D-Bus message calls. |
188 It calls the function stored in `dbus-registered-objects-table'. | 205 It calls the function stored in `dbus-registered-objects-table'. |
189 The result will be made available in `dbus-return-values-table'." | 206 The result will be made available in `dbus-return-values-table'." |
881 "RequestName" service 0)) | 898 "RequestName" service 0)) |
882 | 899 |
883 ;; Add the handler. We use `dbus-service-emacs' as service name, in | 900 ;; Add the handler. We use `dbus-service-emacs' as service name, in |
884 ;; order to let unregister SERVICE despite of this default handler. | 901 ;; order to let unregister SERVICE despite of this default handler. |
885 (dbus-register-method | 902 (dbus-register-method |
886 bus dbus-service-emacs path dbus-interface-properties | 903 bus service path dbus-interface-properties "Get" 'dbus-property-handler) |
887 "Get" 'dbus-property-handler) | |
888 (dbus-register-method | 904 (dbus-register-method |
889 bus dbus-service-emacs path dbus-interface-properties | 905 bus service path dbus-interface-properties "GetAll" 'dbus-property-handler) |
890 "GetAll" 'dbus-property-handler) | |
891 (dbus-register-method | 906 (dbus-register-method |
892 bus dbus-service-emacs path dbus-interface-properties | 907 bus service path dbus-interface-properties "Set" 'dbus-property-handler) |
893 "Set" 'dbus-property-handler) | |
894 | 908 |
895 ;; Create a hash table entry. We use nil for the unique name, | 909 ;; Create a hash table entry. We use nil for the unique name, |
896 ;; because the property might be accessed from anybody. | 910 ;; because the property might be accessed from anybody. |
897 (let ((key (list bus interface property)) | 911 (let ((key (list bus interface property)) |
898 (val (list (list nil service path (cons access value))))) | 912 (val (list (list nil service path (cons access value))))) |
900 | 914 |
901 ;; Return the object. | 915 ;; Return the object. |
902 (list key (list service path)))) | 916 (list key (list service path)))) |
903 | 917 |
904 (defun dbus-property-handler (&rest args) | 918 (defun dbus-property-handler (&rest args) |
905 "Handler for reply messages of asynchronous D-Bus message calls. | 919 "Default Handler for the \"org.freedesktop.DBus.Properties\" interface. |
906 It calls the function stored in `dbus-registered-objects-table'. | 920 It will be registered for all objects created by `dbus-register-object'." |
907 The result will be made available in `dbus-return-values-table'." | |
908 (let ((bus (dbus-event-bus-name last-input-event)) | 921 (let ((bus (dbus-event-bus-name last-input-event)) |
909 (path (dbus-event-path-name last-input-event)) | 922 (path (dbus-event-path-name last-input-event)) |
910 (method (dbus-event-member-name last-input-event)) | 923 (method (dbus-event-member-name last-input-event)) |
911 (interface (car args)) | 924 (interface (car args)) |
912 (property (cadr args))) | 925 (property (cadr args))) |