The directory SHROOT/src is present only in a source release. It contains the source code for Shore. The subdirectories of src are presented here in the order of they are normally visited when Shore is compiled, which is more or less "bottom-up." The code in a later directory may depend on code in directories described earlier.
The SHROOT/src/fc directory contains what we call "foundation" classes. These C++ classes are meant to be easy to use in software systems other than Shore. They do not depend on any other Shore code. Included are classes for such things as lists, hash tables and error handling. Most things in this directory have the prefix w_. Nobody knows what "w" stands for.
The SHROOT/sthread directory contains a thread package. It also contains source code for the diskrw program, which helps the Shore server do asynchronous I/O. The server forks a copy of diskrw for each volume it is managing. When it wants to do I/O, it notifies the diskrw process. The server and the diskrw process communicate data through shared memory and synchronize with TCP messages or signals.
The SHROOT/common directory contains code needed by most layers of Shore. In this directory are the interfaces and implementations for data types from which Shore's persistent data structures are built. Included are implementations of object identifiers, thread-safe hash tables and options.
The SHROOT/sm directory contains code for the Shore Storage Manager (SSM). The interface for the SSM consists of the public interfaces of the classes ssm, pin_i and scan_xxx_i classes defined in sm.h, pin.h and scan.h, respectively.
The SHROOT/rpc4.0 directory contains a modified copy of Sun Microsystems' "Portable ONC/NFS", a public-domain implementation of the Sun RPC and XDR protocols.
We have made minor changes for its use in Shore. We use only a portion of the package. The complete package is included here, but we support only the portion that Shore uses (SHROOT/rpc4.0/rpc and SHROOT/rpc4.0/rpcgen), to the extent that the Shore Value-Added Server uses it. (We do not provide general support for it, and we have no manual pages for it.) On the Solaris platform, only SHROOT/rpc4.0/rpcgen is used.
The SHROOT/vas directory contains code for the Shore Value-Added Server (SVAS). It has the following subdirectories.
The SHROOT/lil directory is for libraries that provide programming-language-independent functionality above the SVAS. Currently, this directory contains only the subdirectory oc and an Imakefile with instructions for assembling the libshore.a and libserver.a libraries from object files created in other directories.
The SHROOT/lil/oc directory contains code for the object cache that is linked with applications. This code is responsible for managing a fixed-size LRU (least-recently used) cache of objects, for swizzling and unswizzling references, and for for flushing objects back to the server on transaction commit and on buffer overflow.
The SHROOT/sdl directory contains source for the Shore Data Language (SDL). It creates the executable program sdl, which compiles SDL specifications into metatype objects stored in the database and C++ header files and implementation stubs to support support these types. This directory also contains a library of routines that support the implementation of generated types by communicating with the object cache layer.
The util directory holds miscellaneous Shore utilities.
The only such program in the current release is is the mount utility, for mounting the Shore file system as an NFS file system. There are two versions currently supplied: SHROOT/src/util/mount/generic contains code for the smount and sumount utilities, which provide only the basic functionality of the standard mount and umount utilities, but with an extension required for Shore. See the README file in that directory for more details. The directory SHROOT/src/util/mount/linux contains the Linux distribution of these utilities. Linux is not supported in the current release of Shore.