Revenj.Utility.ChunkedMemoryStream.Seek C# (CSharp) Method

Seek() public method

Seek to position in the stream.
public Seek ( long offset, SeekOrigin origin ) : long
offset long offset at stream
origin SeekOrigin position type
return long
        public override long Seek(long offset, SeekOrigin origin)
        {
            switch (origin)
            {
                case SeekOrigin.Begin:
                    CurrentPosition = (int)offset;
                    break;
                case SeekOrigin.Current:
                    CurrentPosition += (int)offset;
                    break;
                default:
                    CurrentPosition = TotalSize - (int)offset;
                    break;
            }
            if (CurrentPosition > TotalSize)
            {
                var max = CurrentPosition >> BlockShift;
                for (int i = Blocks.Count; i <= max; i++)
                    Blocks.Add(new byte[BlockSize]);
                TotalSize = CurrentPosition;
            }
            return CurrentPosition;
        }