;; until a reply is given, but any such signals are stocked up as
;; pending for later processing on demand.
(define (invoke METHOD ARGS (FLAGS 0))
- (when (regex "((.+)\\.)?([^(]+)\\((.*)\\)$" METHOD 0)
- (let ((INTERFACE $2) (MEMBER $3) (SIGNATURE $4))
+ (when (regex "((.+):)?((.+)\\.)?([^(]+)\\((.*)\\)$" METHOD 0)
+ (let ((PATH $2) (INTERFACE $4) (MEMBER $5) (SIGNATURE $6))
;;(println (list 'invoke (bus-name) INTERFACE MEMBER SIGNATURE))
(if (message 'METHOD_CALL FLAGS
(list nil ; (if SELF-NAME (list 'SENDER SELF-NAME))
(list 'DESTINATION (bus-name))
- (list 'PATH (%path))
+ (list 'PATH (if (empty? PATH) (%path) PATH))
(if (empty? INTERFACE) nil
(list 'INTERFACE INTERFACE))
(list 'MEMBER MEMBER)
;; DICT_ENTRY<STRING,ARRAY of
;; DICT_ENTRY<STRING,VARIANT>>>
;; objpath_interfaces_and_properties);
-;;;;
+;;org.freedesktop.DBus.ObjectManager.GetManagedObjects():a(oa(sa(sv)))
+;
;;org.freedesktop.DBus.Hello():s
;;org.freedesktop.DBus.RequestName(su):u
;;org.freedesktop.DBus.ReleaseName(s):u
;;org.freedesktop.DBus.StartServiceByName(?)
;;org.freedesktop.DBus.NameOwnerChanged(?)
+;; org.freedesktop.DBus.Introspectable.Introspect():s (xml data)
+;; https://dbus.freedesktop.org/doc/dbus-specification.html#introspection-format
+
"lsp-dbus.lsp"