On 8 Jul 2014 at 7:34, pfultz2 wrote:
You might have a look at AFIO too :)
I might take a look at that, but overall I don't really need async io. However, I did need the stream to be `Seekable`, that is, it would let me read and set the position in the file. I don't think this works really well with async io.
Async i/o has no concept of file position. You schedule read scatters
and write gathers to some file offset. They complete when the
conditions you have requested for the op are met.
It is of course extremely easy to add a file position using an
std::atomic
I don't see sync stream as a problem really. A default timeout could be a property of the stream, rather than adding it to the read function. Ideally, it would be nice if there were facades that would make an async stream -> sync stream, and a sync stream -> async stream.
Sure, if it meets your requirements and doesn't eat data, it's a good solution. Unlike network i/o, timeouts have no place in file i/o. A file operation will always either eventually complete, or eventually return an error. I have seen, during testing, a single read take over a minute to complete, so timing that out would be bad as cancelling scheduled i/o is unfortunately very non-portable (and can corrupt memory on Windows). Niall -- ned Productions Limited Consulting http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/