KDE is not an OS platform... (And neither is Gnome)
nf2
nf2.email at gmail.com
Sat Oct 31 17:24:49 GMT 2009
On Fri, Oct 30, 2009 at 10:23 PM, Kevin Krammer <kevin.krammer at gmx.at> wrote:
> On Friday, 2009-10-30, Michael Pyne wrote:
>
>> I think a saner alternative to integrating GVFS into KIO would be to
>> support the IO-transfer API in use (assuming they use an out-of-process
>> model
>
> Yes, they do. GVFS mount daemon are separate processes, shared between
> applications accessing the same protocol.
>
Actually in most cases they are launched per remote resource (like
protocol://user@server). When I, for instance, connect to my own FTP
server and ftp.kde.org, i can see two gvfsd-ftp processes running. But
for HTTP there is only a single gvfsd-http...
>
>> Really making something like FUSE that "backend API" would probably be best
>> long-term, except that it wouldn't work under Windows or OS X (and possibly
>> BSD?)
>
> The other way around, which is what GVFS is doing, sounds to be a better
> approach.
> Applications directly dealing with GVFS can reap the full benefit of the
> architecture, applications still living in POSIX world can use the same data
> through the FUSE mounts of GVFS.
>
> The only thing missing is currently a Qt technology stack based client library
> for GVFS, just like there is not GObject technology based on for KIO slaves.
>
I guess you meant a pure Qt implementation, using QDBus...
Yes, that sounds like an exciting undertaking for making this a true
"service oriented
infrastructure". And it's all D-Bus anyway, plus a binary socket
protocol for GInputStream/GOutputStream...
But probably not that essential for actually using it (at least in an
ioslave) , as just linking current C-client doesn't look like a big
burdon - it just uses some libraries from the GLib package plus
libdbus-1 (it doesn't even require the libdbus-glib bindings).
Here is a list of the current dependencies:
* The public interfaces:
$ ldd /usr/lib/libgio-2.0.so
linux-vdso.so.1 => (0x00007fffd2ffe000)
libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x00007f21caa43000)
libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x00007f21ca83f000)
libdl.so.2 => /lib/libdl.so.2 (0x00007f21ca63a000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007f21ca375000)
libpcre.so.3 => /lib/libpcre.so.3 (0x00007f21ca145000)
libselinux.so.1 => /lib/libselinux.so.1 (0x00007f21c9f28000)
libc.so.6 => /lib/libc.so.6 (0x00007f21c9bb6000)
/lib64/ld-linux-x86-64.so.2 (0x00007f21caf27000)
* The GVFS implementation of those interfaces (GVFS client part):
$ ldd /usr/lib/gio/modules/libgvfsdbus.so
linux-vdso.so.1 => (0x00007fffe6dfe000)
libgvfscommon.so.0 => /usr/lib/libgvfscommon.so.0 (0x00007f6ade885000)
libdbus-1.so.3 => /lib/libdbus-1.so.3 (0x00007f6ade648000)
libgio-2.0.so.0 => /usr/lib/libgio-2.0.so.0 (0x00007f6ade3ca000)
libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x00007f6ade184000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007f6addebf000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007f6addca2000)
libc.so.6 => /lib/libc.so.6 (0x00007f6add930000)
libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x00007f6add72c000)
libdl.so.2 => /lib/libdl.so.2 (0x00007f6add527000)
libpcre.so.3 => /lib/libpcre.so.3 (0x00007f6add2f7000)
libselinux.so.1 => /lib/libselinux.so.1 (0x00007f6add0db000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6adecdc000)
* The code shared between the client and the mount-daemons:
$ ldd /usr/lib/libgvfscommon.so.0
linux-vdso.so.1 => (0x00007fff3c1fe000)
libdbus-1.so.3 => /lib/libdbus-1.so.3 (0x00007f5133c99000)
libgio-2.0.so.0 => /usr/lib/libgio-2.0.so.0 (0x00007f5133a1c000)
libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x00007f51337d5000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007f5133510000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007f51332f4000)
libc.so.6 => /lib/libc.so.6 (0x00007f5132f81000)
libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x00007f5132d7d000)
libdl.so.2 => /lib/libdl.so.2 (0x00007f5132b79000)
libpcre.so.3 => /lib/libpcre.so.3 (0x00007f5132948000)
libselinux.so.1 => /lib/libselinux.so.1 (0x00007f513272c000)
/lib64/ld-linux-x86-64.so.2 (0x00007f513410e000)
Technically I can only see a little problem, because GVFS needs some
client side "intelligence" for mapping URIs to mount daemons. For some
protocols this can't be done in a standard way (http, webdav and
smb-shares), therefore there are specific GVfsUriMapper
implementations. This code would have to be shared of course.
Norbert
More information about the kde-core-devel
mailing list