David Sugar - 2000-04-17

Sean contributed a nice design for a CC++ "atomic" counter class
and this is already in cvs.  In addition, there are plans to rewrite the
"File" class finally and for the 0.9.6 release.

The main change is a new class tree built around "RandomFile" which clearly is intended for random access "block" I/O rather than
streaming file services. 

RandomFile will be used to create a new "ThreadFile" which replaces "SharedFile".  The new ThreadFile will keep a threadkey for file
position and I/O transaction marks for each thread, and will use
pread/pwrite for atomic I/O whenever possible.  The "SharedFile"
will be opened "exclusive" and is assumed to be used only by the
current application and it's threads.  Applications include building
threaded database servers which use network I/O rather than shared file access for transaction posting.

A new RandomFile derived "SharedFile" will replace the current "LockedFile" and offer shared file access using file locks to keep different threads and applications for stepping over the database.  SharedFiles will assume that each local thread has a "dup'd" copy of the file handle rather than a single file handle shared by multiple threads the way "ThreadFile" behaves.

The new MemFile or MappedFile class will also be built from RandomFile.