public StashedDisposableCacheValue(TKey key, IDisposableValue <TValue> value, IExpiryStash <TKey> stash) : base(key, stash) { Contracts.Requires.That(value != null); this.value = value; }
public SharedDisposable(IDisposableValue <T> value, int count) { Contracts.Requires.That(count >= 0); this.value = value; this.count = new AtomicInt(count); if (count == 0) { this.value?.Dispose(); } }
public ContourableVoxelView( IDisposableValue <IReadOnlyVoxelGridChunk[, , ]> voxelChunkPins, Index3D voxelChunkDimensionsInVoxels, Index3D stageVoxelIndexOfViewOrigin) { Contracts.Requires.That(voxelChunkPins != null); this.voxelChunkDimensionsInVoxels = voxelChunkDimensionsInVoxels; this.stageVoxelIndexOfViewOrigin = stageVoxelIndexOfViewOrigin; this.pins = voxelChunkPins; this.voxels = CompositeArray.Create( voxelChunkPins.Value.ConvertAll(chunk => chunk.VoxelsLocalView), this.voxelChunkDimensionsInVoxels); }
public static bool TryTakeLoan <T>(this IPool <T> pool, out IDisposableValue <T> value) { Contracts.Requires.That(pool != null); T result; if (pool.TryTake(out result)) { value = new LoanedValue <T>(pool, result); return(true); } else { value = null; return(false); } }
/// <inheritdoc /> public void OnNext(IDisposableValue <T> value) => this.subject.OnNext(new SharedDisposable(value, this.counter.SubscriberCount));
public SharedDisposable(IDisposableValue <T> value) { this.value = value; this.count = new AtomicInt(Uninitialized); }
public static ICacheValue <TKey, TValue> CreateStashed <TKey, TValue>( TKey key, IDisposableValue <TValue> value, IExpiryStash <TKey> stash) => new StashedDisposableCacheValue <TKey, TValue>(key, value, stash);