diff --git a/docs/reference/gio/overview.xml b/docs/reference/gio/overview.xml index 8d11d7277..18d6e79cd 100644 --- a/docs/reference/gio/overview.xml +++ b/docs/reference/gio/overview.xml @@ -1,6 +1,88 @@ GIO Overview + + GIO is striving to provide a modern, easy-to-use VFS api that sits + at the right level in the library stack. The goal is to overcome the + shortcomings of gnome-vfs and provide an api that is so good that + developers prefer it over raw POSIX calls. Among other things + that means using GObject. It also means not cloning the POSIX + api, but providing a higher-level, document-centric interfaces. + + + + The abstract file system model of GIO consists of a number of + interfaces and base classes for I/O and files: + + + GFile + reference to a file + + + GFileInfo + information about a file or filesystem + + + GFileEnumerator + list files in directories + + + GDrive + represents a drive + + + GVolume + represents a file system in an abstract way + + + GMount + represents a mounted file system + + + Then there is a number of stream classes, similar to the input and + output stream hierarchies that can be found in frameworks like Java: + + + GInputStream + read data + + + GOutputStream + write data + + + GSeekable + seek in data + + + There are interfaces related to applications and the types + of files they handle: + + + GAppInfo + information about an installed application + + + GIcon + abstract type for file and application icons + + + Beyond these, GIO provides facilities for file monitoring, + asynchronous I/O and filename completion. In addition to the + interfaces, GIO provides implementations for the local case. + Implementations for various network file systems are provided + by the GVFS package as loadable modules. + + + + Other design choices which consciously break with the gnome-vfs + design are to move backends out-of-process, which minimizes the + dependency bloat and makes the whole system more robust. The backends + are not included in GIO, but in the separate GVFS package. GVFS + also contains the GVFS daemon, which spawn further mount daemons + for each individual connection. + +
GIO in the GTK+ library stack @@ -8,7 +90,15 @@
- + + The GIO model of I/O is stateful: if an application establishes e.g. + a sftp connection to a server, it becomes available to all applications + in the session; the user does not have to enter his password over + and over again. + + + One of the big advantages of putting the VFS in the GLib layer + is that GTK+ can directly use it, e.g. in the filechooser. + +