System.Net.Cache.RangeStream.Seek C# (CSharp) Method

Seek() public method

public Seek ( long offset, SeekOrigin origin ) : long
offset long
origin SeekOrigin
return long
        public override long Seek(long offset, SeekOrigin origin) {
            switch (origin) {
            case SeekOrigin.Begin:
                        offset += m_Offset;
                        if (offset > m_Offset+m_Size) {
                            offset = m_Offset+m_Size;
                        }
                        if (offset < m_Offset) {
                            offset = m_Offset;
                        }
                        break;
            case SeekOrigin.End:
                        offset -= (m_Offset+m_Size);
                        if (offset > 0) {
                            offset = 0;
                        }
                        if (offset < -m_Size) {
                            offset = -m_Size;
                        }
                        break;
            default:
                        if (m_Position+offset > m_Offset+m_Size) {
                            offset = (m_Offset+m_Size) - m_Position;
                        }
                        if (m_Position+offset < m_Offset) {
                            offset = m_Offset-m_Position;
                        }
                        break;
            }
            m_Position=m_ParentStream.Seek(offset, origin);
            return m_Position-m_Offset;
        }