private static IDisposable[] GetDisposables(IRollingMemory rollingMemory, bool disposeOfRollingMemoryOnDispose) { if (disposeOfRollingMemoryOnDispose) { return new IDisposable[] { rollingMemory }; } return null; }
public BlockingWriteRollingMemory(Func<IRollingMemoryStateMonitor, IRollingMemory> targetFactory, IRollingMemoryStateMonitor rollingMemoryStateMonitor, long blockWritesAboveLagBytes) { var lagCountingRollingMemoryStateMonitor = new LagCountingRollingMemoryStateMonitor(); rollingMemoryStateMonitor = new CompositeRollingMemoryStateMonitor(rollingMemoryStateMonitor, lagCountingRollingMemoryStateMonitor); _target = targetFactory(rollingMemoryStateMonitor); _writeStream = new BlockForCapacityWriteStream( _target.WriteStream, () => blockWritesAboveLagBytes - lagCountingRollingMemoryStateMonitor.Lag, lagCountingRollingMemoryStateMonitor.WaitForLagChange, lagCountingRollingMemoryStateMonitor.AcquireLagChangeLock, lagCountingRollingMemoryStateMonitor.ReleaseLagChangeLock ); }
public static RollingMemoryStream CreateRollingMemoryStream(IRollingMemory rollingMemory, bool disposeOfRollingMemoryOnDispose) { return new RollingMemoryStream(rollingMemory, disposeOfRollingMemoryOnDispose); }
public RollingMemoryStream(IRollingMemory rollingMemory, bool disposeOfRollingMemoryOnDispose) : base(rollingMemory.ReadStream, rollingMemory.WriteStream, rollingMemory.ReadStream, GetDisposables(rollingMemory, disposeOfRollingMemoryOnDispose)) { _rollingMemory = rollingMemory; }