public void DeleteBytes(long index, long length) { try { long num2; DataBlock nextBlock; long num = length; for (DataBlock block = GetDataBlock(index, out num2); (num > 0L) && (block != null); block = (num > 0L) ? nextBlock : null) { long num3 = block.Length; nextBlock = block.NextBlock; long count = Math.Min(num, num3 - (index - num2)); block.RemoveBytes(index - num2, count); if (block.Length == 0L) { _dataMap.Remove(block); if (_dataMap.FirstBlock == null) { _dataMap.AddFirst(new MemoryDataBlock(new byte[0])); } } num -= count; num2 += block.Length; } } finally { _totalLength -= length; OnLengthChanged(EventArgs.Empty); OnChanged(EventArgs.Empty); } }
private void ReInitialize() { _dataMap = new DataMap(); _dataMap.AddFirst((DataBlock)new FileDataBlock(0L, _stream.Length)); _totalLength = _stream.Length; }
private void ReInitialize() { _dataMap = new DataMap(); _dataMap.AddFirst((DataBlock) new FileDataBlock(0L, _stream.Length)); _totalLength = _stream.Length; }