Added optional path prefix (with :) to the METHOD argument of :invoke.
authorRalph Ronnquist <ralph.ronnquist@gmail.com>
Sun, 16 Apr 2023 01:42:32 +0000 (11:42 +1000)
committerRalph Ronnquist <ralph.ronnquist@gmail.com>
Sun, 16 Apr 2023 01:42:32 +0000 (11:42 +1000)
Note on the marshalling encoding of the GetManagedObjects signature.

lsp-dbus/lsp-dbus.lsp

index 98aa0279337987df3dccff9ec16d3c1771fec4ce..895f53d7a9c948a995aa80f273eab94d65a99d1d 100644 (file)
 ;; 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"