Questions on the new KIO::FileJob API
Vlad
vladc6 at yahoo.com
Wed May 7 03:41:00 BST 2008
Hi,
--- nf2 <nf2 at scheinwelt.at> wrote:
> 1) - Creating Files: Apparently FileJob in kio_file doesn't allow
> creating files.
I think this bug is fixed by adding O_CREAT whenever the user requests
QIODevice::WriteOnly. If the file already exists, O_CREAT does
nothing, so it shouldn't hurt. I hope to commit this fix soon:
http://lists.kde.org/?l=kde-core-devel&m=121012416913922&w=2
> 2) - Reading Files: From reading the code in kio_file i'm not sure
> whether data() is supposed to emit all the requested data in a
> single
> callback
Yes, one data() should emit all the requested data, unless the slave
reaches EOF, in which case it returns all the data up to the EOF.
> as the client might try to call
> seek()
> before read() is finished.
Once you call FileJob::read(), you're supposed to _wait_ until the
data() slot from that read() request has been served before making
another request to the FileJob (ie. calling another FileJob::seek(),
FileJob::write(), etc).
KioFuseApp::seekReadMainThread() in kiofuseapp.cpp does this:
http://websvn.kde.org/trunk/playground/libs/kiofuse/
Also, KIO is not threadsafe, so a FileJob can only be used by the
thread that it was created in.
> **) I wonder if there could be a "timeout" parameter for read() and
> write(). GIO, for instance, seems to allow cancellation of
> read()/write() operations.
That would be nice, but AFAIK apps that use KIO can't specify a
timeout value. However, the slave can have its own internal timer and
issue an error() if it detects that an operation is taking too long.
>
> 3) - Open ReadWrite doesn't seem to be implemented in kio_file
I think this is fixed by the series of patches referenced above.
Thanks,
Vlad
____________________________________________________________________________________
Be a better friend, newshound, and
know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
More information about the kde-core-devel
mailing list