=== lsp-dbus API
-(*load "lsp-dbus.lsp")::
+(*load* "lsp-dbus.lsp")::
The main file, *lsp-dbus.lsp*, includes connection setup (see
*:initialize* below) and client registration (i.e. issuing the dbus
_prompt-event_ function for processing any unsolicited messages from
dbus (so called "signals").
+==== The Dbus Context
+
(*Dbus* _PATH_ [_DESTINATION_])::
The _Dbus_ context is used for identifying remote "objects" with the
convention of chopping the initial "/" and replacing remaining "/"
with ".".
+
-Note that a term like _(Dbus "/org/freedesktop/ObjectManager")_ define
-an identifer for, or pointer to, a remote "dbusobject", and it is here
-referred to as _PROXY_.
+====
+Note that a term like _(Dbus "/org/freedesktop/DBus")_ defines an
+identifer for, or pointer to, a remote "dbus object", and it is here
+referred to as _PROXY_. The _PATH_ part serves as the object
+identifier for dbus while the _DESTINATION_ part is an identfier for
+the application that we expect holds the actual "dbus object" for the
+given _PATH_. This particular term identifies object path
+"/org/freedesktop/DBus" held by the application named
+"org.freedesktop.DBus", which belongs to the dbus framewok.
+
+There is however no central arbitration for paths in dbus. It all
+relies on application developers documenting which paths their
+applications service and access, and then client applications rely on
+using the destination tags for directing their messages to the
+intended applications.
+====
+
+(*:new-path* _PROXY_ _PATH_)::
+
+The _:new-path_ method clones the FOOP object to dentify the given
+_PATH_ for the same destination.
(*:invoke* _PROXY_ _METHOD_ _ARGUMENTS_ _FLAGS_)::
takes a single argument, which is the list of unmarshalled actual call
arguments.
+==== The DbusConnection Context
+
(*DbusConnection* _PATH)::
The _DbusConnection_ context is a FOOP implementation intended for the
non-negative then that file descriptor is closed before opening the
object's path.
-(*:read-message* _OBJECT_)
+(*:read-message* _OBJECT_)::
This method reads the next message by reading data from the socket
successively while there's something to read within a millisecond.
-(*:handshake* _OBJECT_ _MESSAGE_ [_PATTERN_])
+(*:handshake* _OBJECT_ _MESSAGE_ [_PATTERN_])::
This method performs a "raw" text-based handshake on the connection,
which means to send the given message and then read and return the
matched. Note that this method is used only during connection setup
and dbus communication uses its own marshalling subsequently.
-(*:initialize* _OBJECT_ [_USER_])
+(*:initialize* _OBJECT_ [_USER_])::
This method performs the connection set up including the very first
newline and the subsequent AUTH handshake. It ends with the connection