VCacheSources(7)

Name

VCacheSources - description of the Vesta-2 cache server source files

Contents

Major Source Files

Here are the major source files in the vesta/cache-common package and brief descriptions of their functionality:

BitVector.[HC]
Defines a class for storing and manipulating bit vectors of arbitrary length. The standard bit-wise operators are overloaded to apply to bit vectors.

CacheIntf.H
Defines constants for the version of the cache server interface, identifiers for cache server methods, and for the results of those methods.

CacheTypes.[CH]
Defines several basic types and values used by the cache server, including PKFile::Epoch, CacheEntry::Index, CacheEntry::Indices, TS::MinTS, TS::T, TS::List, Derived::Index, Derived::Indices, VestaVal::T, Model::T, FV::T, FV::List, and FV::ListApp.

Constants.[HC]
Defines constants needed by the cache, evaluator, and/or weeder, such as the duration of leases on derived files.

CacheConfig.[HC]
Defines global constants corresponding to cache server configuration variables read from the Vesta-2 configuration file.

PKPrefix.[HC]
Defines the type PKPrefix::T for computing the prefix of a fingerprint tag. Fingerprint prefixes are used to name MultiPKFiles. Also defined the type PKPrefix::List.

ReadConfig.[HC]
Defines wrapper routines for the operations of a VestaConfig object for accessing values in the Vesta configuration file.

Here are the major source files in the vesta/cache-client package:

CacheC.[HC]
Provides the client interface to the cache server's main functions: FreeVariables, Lookup, AddEntry, Checkpoint, and RenewLeases. This is the interface used by the evaluator.

DebugC.[HC]
Provides the client interface to the cache server's debugging function(s): FlushAll. This interface is only used by test programs.

FV2.[HC]
Defines a modified representation of free variables. As opposed to the type "FV::T" defined in the cache-common package, which is a subtype of a Text, a "FV2::T" is a sequence of texts. This is the representation of free variables used by the evaluator. The Send methods of "FV2::T" and "FV2::List" marshal a text sequence as a single string so it can be represented as an "FV::T" on the server side; the "FV2::T" and "FV2::List" Recv methods convert a single text back into a sequence.

ParCacheC.[HC]
Defines the client interface for interacting with a partitioned version of the cache server. A partitioned version of the cache server is not currently implemented, but this interface provides dummy operations that would be required by clients if it were.

WeederC.[HC]
Provides the client interface to the cache server's weeder-related functions. This is the interface used by the weeder.

Here are the major source files in the vesta/cache-server package:

VCache.C
The main module for the Vesta-2 cache server. It simply parses any command-line options and instantiates a CacheS object.

CacheS.[HC]
The main cache server class.

VPKFile.[HC]
The volatile PKFile class. There is one of instance of this class for each primary key stored in the cache.

VPKFileChkPt.H
A structure for recording the state of a VPKFile. This is used by the SMultiPKFile::Rewrite method and related methods.

SPKFile.[HC]
A class for reading/writing PKFiles in the stable cache.

SPKFileRep.[HC]
Data structure objects for the PKFile header data. These implement the representation of the PKFile header data on disk.

VMultiPKFile.[HC]
A class for grouping together VPKFile objects that contain new entries to be written to the stable cache.

SMultiPKFile.[HC]
A class for reading/writing MultiPKFiles in the stable cache.

SMultiPKFileRep.[HC]
Data structure objects for the MultiPKFile header data. These implement the representation of the MultiPKFile header data on disk.

CacheLog.[HC]
An in-memory log of new cache entries. The log is maintained by the main CacheS object.

GraphLog.[HC]
An in-memory log of new nodes, reflecting the reachability graph on cache entries and deriveds. The log is maintained by the main CacheS object.

EmptyPKLog.[HC]
A disk log that records PKFiles that have become empty, along with their corresponding pkEpoch values. See the discussion on supporting deletions in the CacheLog.

Leases.[HC]
A class implementing a set of leases together with a background thread for periodically expiring them.

CacheEntry.[HC]
Defines the CE::T object type, a cache entry. The cache entries are stored in volatile PKFiles, stable PKFiles, and the cache log.

Subsidiary Source Files

These are subsidiary sources in the cache-server package that don't play quite as major a role in the implementation of the cache server as those in the previous section.

Combine.[HC]
An interface for combining fingerprints into a tag comprising the XOR of their words, a new fingerprint, or both (the latter is used to represent the uncommon free variable values in a cache entry).

ExpCache.[HC]
An interface for exporting the cache server via SRPC.

Generics.[C]
A module for instantiating all of the generic templates in one place. Eventually, these will be generated automatically by the compiler.

IntKeyLR.[H]
Integer type that can be used as the key of a Table and that supports logging and recovery.

IntIntTbl.[HC]
A subtype of Table<IntKeyLR,int> that supports logging and recovery.

Intvl.[HC]
A list of integer-valued intervals. Used to store the log of used CI's.

Auxiliary Program Sources

These are sources for auxiliary programs related to the Vesta-2 cache server.

CreateCacheDirs
A script for creating the necessary directories in which the cache server's persistent files are stored. See CreateCacheDirs(1).

EraseCache
A script for erasing the persistent log files, stable variable files, and MultiPKFiles maintained by the cache server. See EraseCache(1).

PrintCacheLog.C
A program for printing the contents of the cache log. See PrintCacheLog(1).

PrintGraphLog.C
A program for printing the contents of the graph log. See PrintGraphLog(1).

PrintMPKFile.C
A program for printing the contents of a MultiPKFile. See PrintMPKFile(1).

ShowCache
A script for listing the persistent log files, stable variable files, and MultiPKFiles maintained by the cache server. See ShowCache(1).

TestMarshalS.C
A program for testing the ExpCache interface and the underlying marshalling routines in the CacheCommon library.

The IMPORT Relation on Interfaces

This section documents the IMPORT relations (partial orders) of the interfaces in the various packages comprising the Vesta-2 cache server. For each package, the interfaces are arranged in levels, and after each interface, the interfaces imported directly by that interface are listed.

vesta/cache-common import relation:

Level 0
BitVector        [ ]
CacheConfig      [ ]
CacheIntf        [ ]
Constants        [ ]
Debug            [ ]
PKPrefix         [ ]
ReadConfig       [ ]
Timer            [ ]
Level 1
CacheTypes       [ BitVector ]
LookupStats      [ Timer ]
Level 2
NewVal           [ BitVector, CacheTypes ]

vesta/cache-server import relation:

Level 0
EmptyPKLog       [ ]
GraphLog         [ ]
IntKeyLR         [ ]
Leases           [ ]
SPKFileRep       [ ]
Level 1
IntIntTbl        [ IntKeyLR ]
Level 2
Combine          [ IntIntTbl ]
Level 3
CacheEntry       [ IntIntTbl, Combine ]
Level 4
VPKFileChkPt     [ CacheEntry ]
Level 5
CacheLog         [ CacheEntry ]
Intvl            [ CacheEntry ]
SPKFile          [ SPKFileRep, IntIntTbl, CacheEntry, VPKFileChkPt ]
Level 6
SMultiPKFileRep  [ SPKFileRep, IntIntTbl, SPKFile ]
Level 7
VPKFile          [ IntIntTbl, CacheEntry, SPKFile,
                   VPKFileChkPt, SMultiPKFileRep ]
Level 8
SMultiPKFile     [ SMultiPKFileRep, VPKFile ]
Level 9
VMultiPKFile     [ VPKFile, SMultiPKFile ]
Level 10
CacheS           [ GraphLog, Leases, CacheEntry, CacheLog,
                   Intvl, VPKFile, VMultiPKFile ]
Level 11
ExpCache         [ CacheS ]

vesta/cache-client import relation:

Level 0
CacheC           [ ]
FV2              [ ]
ParCacheC        [ ]
WeederC          [ ]

See Also

VCache(1), VCacheImpl(7), VCacheLocks(7), VCacheToDo(7)

Author

Allan Heydon (caheydon@yahoo.com)

Last modified on Thu Nov  8 12:48:54 EST 2001 by ken@xorian.net
     modified on Fri Feb 28 10:49:39 PST 1997 by heydon
This page was generated automatically by mtex software.