C# Class Bari.Core.Build.Cache.MemoryBuildCache

Simple build cache which only stores build outputs until the process is running
Inheritance: IBuildCache, IDisposable
Datei anzeigen Open project: vigoo/bari Class Usage Examples

Public Methods

Method Description
Contains ( BuildKey builder, IDependencyFingerprint fingerprint ) : bool

Checks if the cache contains stored outputs for a given builder with a given dependency fingerprint

If IBuildCache.Restore will be also called, the cache must be locked first using the IBuildCache.LockForBuilder method.

ContainsAny ( BuildKey builder ) : bool

Checks if the cache contains stored outputs for a given builder with any dependency fingerprint

Dispose ( ) : void

Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

LockForBuilder ( BuildKey builder ) : void

Locks the cache for a given builder.

Until calling IBuildCache.UnlockForBuilder, it is guaranteed that no IBuildCache.Store operation will be ran for the given builder from other threads.

Restore ( BuildKey builder, IFileSystemDirectory targetRoot, bool aggressive, Regex aggressiveExceptions = null ) : ISet

Restores the stored files for a given builder to a file system directory

The cache only stores the latest stored results and this is what will be restored to the target directory. To verify if it was generated with the correct dependency fingerprint, use IBuildCache.Contains.

To ensure thread safety, use IBuildCache.LockForBuilder.

Store ( BuildKey builder, IDependencyFingerprint fingerprint, IEnumerable outputs, IFileSystemDirectory targetRoot ) : void

Store build outputs in the cache by reading them from the file system

UnlockForBuilder ( BuildKey builder ) : void

Removes the lock put by the IBuildCache.LockForBuilder method.

Private Methods

Method Description
GetOrCreate ( BuildKey builder ) : Bari.Core.Build.Cache.MemoryCacheItem

Method Details

Contains() public method

Checks if the cache contains stored outputs for a given builder with a given dependency fingerprint

If IBuildCache.Restore will be also called, the cache must be locked first using the IBuildCache.LockForBuilder method.

public Contains ( BuildKey builder, IDependencyFingerprint fingerprint ) : bool
builder BuildKey Builder key
fingerprint IDependencyFingerprint Current dependency fingerprint
return bool

ContainsAny() public method

Checks if the cache contains stored outputs for a given builder with any dependency fingerprint
public ContainsAny ( BuildKey builder ) : bool
builder BuildKey Builder key
return bool

Dispose() public method

Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
public Dispose ( ) : void
return void

LockForBuilder() public method

Locks the cache for a given builder.

Until calling IBuildCache.UnlockForBuilder, it is guaranteed that no IBuildCache.Store operation will be ran for the given builder from other threads.

public LockForBuilder ( BuildKey builder ) : void
builder BuildKey Builder key
return void

Restore() public method

Restores the stored files for a given builder to a file system directory

The cache only stores the latest stored results and this is what will be restored to the target directory. To verify if it was generated with the correct dependency fingerprint, use IBuildCache.Contains.

To ensure thread safety, use IBuildCache.LockForBuilder.

public Restore ( BuildKey builder, IFileSystemDirectory targetRoot, bool aggressive, Regex aggressiveExceptions = null ) : ISet
builder BuildKey Builder key
targetRoot IFileSystemDirectory Target file system directory
aggressive bool If true, files in the target directory won't be checked by hash before overriding them
aggressiveExceptions Regex Exceptions to the aggresivve mode. Can be null if not used.
return ISet

Store() public method

Store build outputs in the cache by reading them from the file system
public Store ( BuildKey builder, IDependencyFingerprint fingerprint, IEnumerable outputs, IFileSystemDirectory targetRoot ) : void
builder BuildKey Builder key (first part of the key)
fingerprint IDependencyFingerprint Dependency fingerprint created when the builder was executed (second part of the key)
outputs IEnumerable Target-relative path of the build outputs to be cached
targetRoot IFileSystemDirectory File system abstraction of the root target directory
return void

UnlockForBuilder() public method

Removes the lock put by the IBuildCache.LockForBuilder method.
public UnlockForBuilder ( BuildKey builder ) : void
builder BuildKey Builder key
return void