diff options
Diffstat (limited to 'gnome-2-24/txt/gvfs_dbus.txt')
-rw-r--r-- | gnome-2-24/txt/gvfs_dbus.txt | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/gnome-2-24/txt/gvfs_dbus.txt b/gnome-2-24/txt/gvfs_dbus.txt new file mode 100644 index 00000000..86ac19ac --- /dev/null +++ b/gnome-2-24/txt/gvfs_dbus.txt @@ -0,0 +1,65 @@ +how to chain to simple stuff + +how to parse uris (i.e. map to mounts) + +what connections do we have: +shared dbus connection +connection to main daemom +connection to each mount daemon + +"fast ops" (uri->gfile) vs blocking ops (read, open etc) and how to avoid slow blocking fast + + +each thread has, on demand: +connection to main daemon +connection to some mount daemons + +global state: +cache of previously used mountpoints + + +how to mount + +how to store/restore permanent mounts with the session => store as drives (mountpoints), not volumes! + +Don't always want to log in to all mounts on login? (mounpoints!) + +computer:// handled in main daemon? + +No volume monitor in public API, only computer:// ? +Problems: +* mounted (desktop/computer:, trash dir) +* unmounted/pre_unmount (desktop/computer:, close windows on unmounted volumes, trash dir) +* map path to volume (close windows on unmounted volumes, check for readonly mount, get volume name) +* get all drives/volumes (detecting where to show eject, mount, unmount menu items, + tree view, places sidebar, display volume icon in pathbar) +* eject/unmount ops +* needs eject + +unmounted URI => return a mountpoint object? + +GMountOperation, async mount operation object +signals => passwd, question, keyring? + +GFile mountpoint => GMountOperation + +What process calls gnome-keyring? + + + +-------------------- + +GFile creation => decompose URI, no i/o + +on i/o: + * figure out mountpoint (for now, always toplevel uri location) + * if we have a local dbus connection to that, use it, otherwise: + + create (if needed) local session dbus connection + + ask for mount daemon for new session + - If not existing, error on i/o, return mountpoint type on get_info + + set up new local connection with the mount daemon + * send dbus message + * recieve answer, if has magic flag, followed by fd sendmsg() (created by socketpair()) + + + |