Example #1
0
        internal override long WriteTo(Stream stream, EncodingOptions encodingOptions, MimeOutputFilter filter, ref MimeStringLength currentLineLength, ref byte[] scratchBuffer)
        {
            long num = this.WriteName(stream, ref scratchBuffer);

            currentLineLength.IncrementBy((int)num);
            bool flag = false;

            if (!this.IsDirty && this.RawLength != 0)
            {
                if (this.IsProtected)
                {
                    num += Header.WriteLines(this.lines, stream);
                    currentLineLength.SetAs(0);
                    return(num);
                }
                if (!this.IsHeaderLineTooLong(num, out flag))
                {
                    num += Header.WriteLines(this.lines, stream);
                    currentLineLength.SetAs(0);
                    return(num);
                }
            }
            MimeStringList fragments = this.lines;

            if (flag)
            {
                fragments = Header.MergeLines(fragments);
            }
            num += Header.QuoteAndFold(stream, fragments, 4026531840U, false, fragments.Length > 0, encodingOptions.AllowUTF8, 0, ref currentLineLength, ref scratchBuffer);
            return(num + Header.WriteLineEnd(stream, ref currentLineLength));
        }
Example #2
0
        internal override long WriteTo(Stream stream, EncodingOptions encodingOptions, MimeOutputFilter filter, ref MimeStringLength currentLineLength, ref byte[] scratchBuffer)
        {
            long num = base.WriteName(stream, ref scratchBuffer);

            currentLineLength.IncrementBy((int)num);
            if (!base.IsDirty && base.RawLength != 0 && base.IsProtected)
            {
                long num2 = Header.WriteLines(base.Lines, stream);
                num += num2;
                currentLineLength.SetAs(0);
                return(num);
            }
            if (!this.parsed)
            {
                this.Parse();
            }
            num += this.WriteValue(stream, encodingOptions, filter, ref currentLineLength, ref scratchBuffer);
            for (MimeNode mimeNode = base.FirstChild; mimeNode != null; mimeNode = mimeNode.NextSibling)
            {
                stream.Write(MimeString.Semicolon, 0, MimeString.Semicolon.Length);
                num += (long)MimeString.Semicolon.Length;
                currentLineLength.IncrementBy(MimeString.Semicolon.Length);
                num += mimeNode.WriteTo(stream, encodingOptions, filter, ref currentLineLength, ref scratchBuffer);
            }
            return(num + Header.WriteLineEnd(stream, ref currentLineLength));
        }
Example #3
0
        internal static long WriteLineEnd(Stream stream, ref MimeStringLength currentLineLength)
        {
            long num = 0L;

            stream.Write(MimeString.CrLf, 0, MimeString.CrLf.Length);
            num += (long)MimeString.CrLf.Length;
            currentLineLength.SetAs(0);
            return(num);
        }
Example #4
0
        // Token: 0x0600018B RID: 395 RVA: 0x00007074 File Offset: 0x00005274
        internal override long WriteTo(Stream stream, EncodingOptions encodingOptions, MimeOutputFilter filter, ref MimeStringLength currentLineLength, ref byte[] scratchBuffer)
        {
            long num = base.WriteName(stream, ref scratchBuffer);

            currentLineLength.IncrementBy((int)num);
            if (!base.IsDirty && base.RawLength != 0)
            {
                if (base.IsProtected)
                {
                    num += Header.WriteLines(base.Lines, stream);
                    currentLineLength.SetAs(0);
                    return(num);
                }
                if (base.InternalLastChild == null)
                {
                    bool flag = false;
                    if (!base.IsHeaderLineTooLong(num, out flag))
                    {
                        num += Header.WriteLines(base.Lines, stream);
                        currentLineLength.SetAs(0);
                        return(num);
                    }
                }
            }
            if (!this.parsed)
            {
                this.Parse();
            }
            MimeNode mimeNode = base.FirstChild;
            int      num2     = 0;

            while (mimeNode != null)
            {
                if (1 < ++num2)
                {
                    stream.Write(MimeString.Comma, 0, MimeString.Comma.Length);
                    num += (long)MimeString.Comma.Length;
                    currentLineLength.IncrementBy(MimeString.Comma.Length);
                }
                num     += mimeNode.WriteTo(stream, encodingOptions, filter, ref currentLineLength, ref scratchBuffer);
                mimeNode = mimeNode.NextSibling;
            }
            return(num + Header.WriteLineEnd(stream, ref currentLineLength));
        }
        // Token: 0x06000554 RID: 1364 RVA: 0x0001D1D4 File Offset: 0x0001B3D4
        internal override long WriteTo(Stream stream, EncodingOptions encodingOptions, MimeOutputFilter filter, ref MimeStringLength currentLineLength, ref byte[] scratchBuffer)
        {
            long num = base.WriteName(stream, ref scratchBuffer);

            currentLineLength.IncrementBy((int)num);
            MimeStringList mimeStringList;

            if (base.RawLength == 0 && this.decodedValue != null && this.decodedValue.Length != 0)
            {
                mimeStringList = this.GetEncodedValue(encodingOptions, ValueEncodingStyle.Normal);
            }
            else if ((byte)(EncodingFlags.ForceReencode & encodingOptions.EncodingFlags) != 0)
            {
                this.ForceParse();
                mimeStringList = this.GetEncodedValue(encodingOptions, ValueEncodingStyle.Normal);
            }
            else
            {
                bool flag = false;
                if (!base.IsDirty && base.RawLength != 0)
                {
                    if (base.IsProtected)
                    {
                        num += Header.WriteLines(base.Lines, stream);
                        currentLineLength.SetAs(0);
                        return(num);
                    }
                    if (!base.IsHeaderLineTooLong(num, out flag))
                    {
                        num += Header.WriteLines(base.Lines, stream);
                        currentLineLength.SetAs(0);
                        return(num);
                    }
                }
                mimeStringList = base.Lines;
                if (flag)
                {
                    mimeStringList = Header.MergeLines(mimeStringList);
                }
            }
            num += Header.QuoteAndFold(stream, mimeStringList, 4026531840U, false, mimeStringList.Length > 0, encodingOptions.AllowUTF8, 0, ref currentLineLength, ref scratchBuffer);
            return(num + Header.WriteLineEnd(stream, ref currentLineLength));
        }
Example #6
0
        internal override long WriteTo(Stream stream, EncodingOptions encodingOptions, MimeOutputFilter filter, ref MimeStringLength currentLineLength, ref byte[] scratchBuffer)
        {
            long num = base.WriteName(stream, ref scratchBuffer);

            currentLineLength.IncrementBy((int)num);
            if (!base.IsDirty && base.RawLength != 0 && base.IsProtected)
            {
                long num2 = Header.WriteLines(base.Lines, stream);
                num += num2;
                currentLineLength.SetAs(0);
                return(num);
            }
            if (!this.parsed)
            {
                this.Parse();
            }
            num += DateHeader.WriteDateHeaderValue(stream, this.utcDateTime, this.timeZoneOffset, ref currentLineLength);
            currentLineLength.SetAs(0);
            return(num);
        }
        // Token: 0x06000237 RID: 567 RVA: 0x00009CEC File Offset: 0x00007EEC
        internal override long WriteTo(Stream stream, EncodingOptions encodingOptions, MimeOutputFilter filter, ref MimeStringLength currentLineLength, ref byte[] scratchBuffer)
        {
            MimePart.CountingWriteStream countingWriteStream  = null;
            MimePart.CountingWriteStream countingWriteStream2 = null;
            long num  = 0L;
            long num2 = 0L;

            if (filter != null)
            {
                countingWriteStream = (stream as MimePart.CountingWriteStream);
                if (countingWriteStream == null)
                {
                    countingWriteStream2 = new MimePart.CountingWriteStream(stream);
                    countingWriteStream  = countingWriteStream2;
                    stream = countingWriteStream;
                }
                num = countingWriteStream.Count;
            }
            for (MimeNode mimeNode = base.FirstChild; mimeNode != null; mimeNode = mimeNode.NextSibling)
            {
                if (filter == null || !filter.FilterHeader(mimeNode as Header, countingWriteStream))
                {
                    num2 += mimeNode.WriteTo(stream, encodingOptions, filter, ref currentLineLength, ref scratchBuffer);
                }
            }
            if (countingWriteStream != null)
            {
                num2 = countingWriteStream.Count - num;
                if (countingWriteStream2 != null)
                {
                    countingWriteStream2.Dispose();
                }
            }
            currentLineLength.SetAs(0);
            return(num2);
        }