Antonio Nunes <mailto:devli...@sintraworks.com> wrote (Friday, May 28, 2010 3:05 AM +0100):

My app is set to observe a folder for changes to its contents (using UKKQueue.
Thanks Uli! :-)). When files are dropped into the folder the app is notified
and processes the files. This works well, except for one catch: sometimes we
receive the notification and spawn the worker thread, and trying to load the
file fails ( [[PDFDocument alloc] initWithURL:sourceURL] returns nil). This
seems to happen predominantly with large files. I get the impression the
notification happens as soon as the file transfer into the watched directory
begins, and my worker thread is ready and starts loading the file before it
has been fully transferred. Hence the failure to create a PDFDocument from the
file.

Is there a way to check whether the file has been fully transferred, or, even
better, to get notified only when the file transfer has been completed?

I deal with this in my app by creating a kqueue to watch for changes in the enclosing folder. When a change occurs, I attempt to open the file using the FS API specifying exclusive read + exclusive write access. If it fails, it's likely because some other process still has the file open. I delay a half second or so and try again.

--
James Bucanek

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to