[PATCH] Multi-Protocol IO-Slave
nf2
nf2 at scheinwelt.at
Mon Jan 14 21:04:51 GMT 2008
Thiago Macieira wrote:
> I do not think, however, that GIO is the answer.
Who knows. I believe it's a great opportunity and at least we should try.
> For one thing, we've just
> released KDE 4.0.0 with KIO support. That means we'll support it for the
> next 5 years or so. For another, I don't see KDE developers writing
> GIO-based slaves any time soon. They will write KIO-based ones because
> they are simpler to write.
>
Of course! Also, because KIO does a lot more than providing a framework
for file-management (which is the primary target of GIO/GVFS). There
seem to be lots of slaves which are application specific.
> Which brings me to two suggestions for future work:
> 1) a KDE/Qt-based implementation of the required parts of GIO, so that KDE
> developers "feel at home" writing ioslaves.
>
The easiest way to accomplish this would probably be a C++ wrapper for
the mount daemon parts of GVFS. This could be Qt-based, but also Glibmm
(I believe a C++ binding for the GIO-client is already under
development). But - on the other hand - the number of protocol-handlers
related to network-transparent file-management is relatively small (see
below).
> 2) the reverse bridge, so that GIO/GVFS-based applications can use
> kioslaves.
>
>
I guess that would also be possible - as GIO has a design of pluggable
backends. GIO is the interface, GVFS is loaded as implementation for
UNIXes with dlopen() as an example. But it might require writing a
KIO-client which fits into GIO, as it provides both synchronous and an
async interfaces. Plugging a Qt based library into a Glib frontend
sounds like an exciting experiment. This would really be
hardcore-testing the shared main-loop (and everything related, like
QtDBus living in the same process as GLib-DBus stuff).
Trying to clear up things a bit, i made a list of protocol-handlers
installed by KDE:
==== Interesting for a shared VFS: ====
** Network transparent file-management **
(those are the important ones. delegating them to a shared VFS
implementation would definitely be a win)
fish.protocol
ftp.protocol
sftp.protocol
ssh.protocol
nfs.protocol
smb.protocol
webdav.protocol
webdavs.protocol
remote.protocol (entry point for listing mounts, launching a mount
helper, browsing smb://)
** local filemanagement: **
(delegating them to GIO/GVFS is not really required, the only reason
might be to reduce the number of slave processes)
file.protocol (could be provided by the GIO bridge as well, just O_RDWR
needs a native implementation)
floppy.protocol (GNOME just mounts floppies, no idea what's better - but
could/should be aligned)
trash.protocol (could be delegated to GIO for consistency - but specs
also work for this)
** archive browsing **
(there are no plans to provide them in GIO/GVFS, though it might work
better than in KIO, because having stateful mount daemons should be an
advantage here - particularly for write support)
ar.protocol
bzip.protocol
bzip2.protocol
tar.protocol
zip.protocol
gzip.protocol
==== Not relevant for a Shared-VFS (internal/app specific)====
** web-browsing: **
(can't be provided through GIO in the same quality. probably uses
meta-data extensively, but i don't have a clue)
http.protocol
https.protocol
** local filemanagement, but internal **
thumbnail.protocol
** Desktop info/management - Konqueror specific AFAIK **
about.protocol
applications.protocol
help.protocol
info.protocol
ghelp.protocol
programs.protocol
fonts.protocol
settings.protocol
man.protocol
** Network, but application internal **
imap4.protocol
imaps.protocol
pop3.protocol
pop3s.protocol
ldap.protocol
ldaps.protocol
kmailservice.protocol
mbox.protocol
nntp.protocol
nntps.protocol
smtp.protocol
smtps.protocol
rtsp.protocol
rtspt.protocol
rtspu.protocol
sieve.protocol
rlogin.protocol
finger.protocol
telnet.protocol
mms.protocol
mmst.protocol
mmsu.protocol
** Don't know **
metainfo.protocol
pnm.protocol
cgi.protocol
data.protocol
Norbert
More information about the kde-core-devel
mailing list