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

Equals() public method

Compare two streams. Length and content will be compared.
public Equals ( Stream another ) : bool
another Stream stream to compare
return bool
        public bool Equals(Stream another)
        {
            var cms = another as ChunkedMemoryStream ?? new ChunkedMemoryStream(another);
            if (cms.TotalSize != TotalSize)
                return false;
            var len = TotalSize >> BlockShift;
            for (int i = 0; i < len; i++)
            {
                var nb = cms.Blocks[i];
                var ob = Blocks[i];
                for (int j = 0; j < BlockSize; j++)
                    if (nb[j] != ob[j])
                        return false;
            }
            var nlb = cms.Blocks[len];
            var olb = Blocks[len];
            var diff = TotalSize & BlockAnd;
            for (int i = 0; i < diff; i++)
                if (nlb[i] != olb[i])
                    return false;
            return true;
        }