summaryrefslogtreecommitdiff
path: root/txt/gvfs_dbus.txt
blob: 86ac19ac06bc2b6fc7b17390ab8e44402a6c5037 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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())