Abstract IO structure for rproxy -------------------------------- $Id: abstract-io.txt,v 1.1 2000/08/04 07:19:38 mbp Exp $ * Short reads and writes: Are short reads and writes allowed? I think the code is a bit confused about this at the moment. At the OS level, we know this: that network reads can be short, and that any call can be short if we're signalled in the middle. In the case of an interrupted call, we'll get rc=-1 and errno=EINTR or EAGAIN. * Non-blocking: Squid is select-driven. I think we need to restructure librsync to allow the caller to push data through. This might be hard, but we can get there by splitting up the processing loop and having the minimum amount of state on the stack. * Error handling: Particularly as we're ignoring SIGPIPE, we should be careful to check the return code on all calls, and respond appropriately if there was an error. * Abstract mapptr We could make mapptr abstract by either allowing some other underlying mechanism rather than POSIX I/O, or by allowing different mapptr implementations. I'm not sure why this would be useful, so I think I'll leave it out for now.