Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
WriteStateInfoBase.cs
Go to the documentation of this file.
1namespace System.Net.Mime;
2
3internal class WriteStateInfoBase
4{
5 protected readonly byte[] _header;
6
7 protected readonly byte[] _footer;
8
9 protected readonly int _maxLineLength;
10
11 protected byte[] _buffer;
12
13 protected int _currentLineLength;
14
15 protected int _currentBufferUsed;
16
17 internal int FooterLength => _footer.Length;
18
19 internal byte[] Footer => _footer;
20
21 internal byte[] Header => _header;
22
23 internal byte[] Buffer => _buffer;
24
25 internal int Length => _currentBufferUsed;
26
28
30
32 {
33 _header = Array.Empty<byte>();
34 _footer = Array.Empty<byte>();
35 _maxLineLength = 70;
36 _buffer = new byte[1024];
39 }
40
41 internal WriteStateInfoBase(int bufferSize, byte[] header, byte[] footer, int maxLineLength)
42 : this(bufferSize, header, footer, maxLineLength, 0)
43 {
44 }
45
46 internal WriteStateInfoBase(int bufferSize, byte[] header, byte[] footer, int maxLineLength, int mimeHeaderLength)
47 {
48 _buffer = new byte[bufferSize];
49 _header = header;
50 _footer = footer;
51 _maxLineLength = maxLineLength;
52 _currentLineLength = mimeHeaderLength;
54 }
55
56 private void EnsureSpaceInBuffer(int moreBytes)
57 {
58 int num = Buffer.Length;
59 while (_currentBufferUsed + moreBytes >= num)
60 {
61 num *= 2;
62 }
63 if (num > Buffer.Length)
64 {
65 byte[] array = new byte[num];
66 _buffer.CopyTo(array, 0);
67 _buffer = array;
68 }
69 }
70
71 internal void Append(byte aByte)
72 {
74 Buffer[_currentBufferUsed++] = aByte;
76 }
77
78 internal void Append(params byte[] bytes)
79 {
81 bytes.CopyTo(_buffer, Length);
82 _currentLineLength += bytes.Length;
83 _currentBufferUsed += bytes.Length;
84 }
85
86 internal void AppendCRLF(bool includeSpace)
87 {
89 Append(13, 10);
91 if (includeSpace)
92 {
93 Append(32);
94 }
96 }
97
98 internal void AppendHeader()
99 {
100 if (Header != null && Header.Length != 0)
101 {
102 Append(Header);
103 }
104 }
105
106 internal void AppendFooter()
107 {
108 if (Footer != null && Footer.Length != 0)
109 {
110 Append(Footer);
111 }
112 }
113
114 internal void Reset()
115 {
118 }
119
120 internal void BufferFlushed()
121 {
123 }
124}
WriteStateInfoBase(int bufferSize, byte[] header, byte[] footer, int maxLineLength)
WriteStateInfoBase(int bufferSize, byte[] header, byte[] footer, int maxLineLength, int mimeHeaderLength)