Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
SqlXmlStreamWrapper.cs
Go to the documentation of this file.
2using System.IO;
3
5
6internal sealed class SqlXmlStreamWrapper : Stream
7{
8 private readonly Stream _stream;
9
10 private long _lPosition;
11
12 private bool _isClosed;
13
14 public override bool CanRead
15 {
16 get
17 {
18 if (IsStreamClosed())
19 {
20 return false;
21 }
22 return _stream.CanRead;
23 }
24 }
25
26 public override bool CanSeek
27 {
28 get
29 {
30 if (IsStreamClosed())
31 {
32 return false;
33 }
34 return _stream.CanSeek;
35 }
36 }
37
38 public override bool CanWrite
39 {
40 get
41 {
42 if (IsStreamClosed())
43 {
44 return false;
45 }
46 return _stream.CanWrite;
47 }
48 }
49
50 public override long Length
51 {
52 get
53 {
54 ThrowIfStreamClosed("get_Length");
55 ThrowIfStreamCannotSeek("get_Length");
56 return _stream.Length;
57 }
58 }
59
60 public override long Position
61 {
62 get
63 {
64 ThrowIfStreamClosed("get_Position");
65 ThrowIfStreamCannotSeek("get_Position");
66 return _lPosition;
67 }
68 set
69 {
70 ThrowIfStreamClosed("set_Position");
71 ThrowIfStreamCannotSeek("set_Position");
72 if (value < 0 || value > _stream.Length)
73 {
74 throw new ArgumentOutOfRangeException("value");
75 }
77 }
78 }
79
81 {
83 _lPosition = 0L;
84 _isClosed = false;
85 }
86
87 public override long Seek(long offset, SeekOrigin origin)
88 {
89 long num = 0L;
90 ThrowIfStreamClosed("Seek");
92 switch (origin)
93 {
94 case SeekOrigin.Begin:
95 if (offset < 0 || offset > _stream.Length)
96 {
97 throw new ArgumentOutOfRangeException("offset");
98 }
100 break;
101 case SeekOrigin.Current:
102 num = _lPosition + offset;
103 if (num < 0 || num > _stream.Length)
104 {
105 throw new ArgumentOutOfRangeException("offset");
106 }
107 _lPosition = num;
108 break;
109 case SeekOrigin.End:
110 num = _stream.Length + offset;
111 if (num < 0 || num > _stream.Length)
112 {
113 throw new ArgumentOutOfRangeException("offset");
114 }
115 _lPosition = num;
116 break;
117 default:
118 throw ADP.InvalidSeekOrigin("offset");
119 }
120 return _lPosition;
121 }
122
123 public override int Read(byte[] buffer, int offset, int count)
124 {
125 ThrowIfStreamClosed("Read");
127 if (buffer == null)
128 {
129 throw new ArgumentNullException("buffer");
130 }
131 if (offset < 0 || offset > buffer.Length)
132 {
133 throw new ArgumentOutOfRangeException("offset");
134 }
135 if (count < 0 || count > buffer.Length - offset)
136 {
137 throw new ArgumentOutOfRangeException("count");
138 }
140 {
142 }
143 int num = _stream.Read(buffer, offset, count);
144 _lPosition += num;
145 return num;
146 }
147
148 public override void Write(byte[] buffer, int offset, int count)
149 {
150 ThrowIfStreamClosed("Write");
152 if (buffer == null)
153 {
154 throw new ArgumentNullException("buffer");
155 }
156 if (offset < 0 || offset > buffer.Length)
157 {
158 throw new ArgumentOutOfRangeException("offset");
159 }
160 if (count < 0 || count > buffer.Length - offset)
161 {
162 throw new ArgumentOutOfRangeException("count");
163 }
165 {
167 }
169 _lPosition += count;
170 }
171
172 public override int ReadByte()
173 {
174 ThrowIfStreamClosed("ReadByte");
175 ThrowIfStreamCannotRead("ReadByte");
177 {
178 return -1;
179 }
181 {
183 }
184 int result = _stream.ReadByte();
185 _lPosition++;
186 return result;
187 }
188
189 public override void WriteByte(byte value)
190 {
191 ThrowIfStreamClosed("WriteByte");
192 ThrowIfStreamCannotWrite("WriteByte");
194 {
196 }
198 _lPosition++;
199 }
200
201 public override void SetLength(long value)
202 {
203 ThrowIfStreamClosed("SetLength");
204 ThrowIfStreamCannotSeek("SetLength");
206 if (_lPosition > value)
207 {
209 }
210 }
211
212 public override void Flush()
213 {
214 if (_stream != null)
215 {
216 _stream.Flush();
217 }
218 }
219
220 protected override void Dispose(bool disposing)
221 {
222 try
223 {
224 _isClosed = true;
225 }
226 finally
227 {
228 base.Dispose(disposing);
229 }
230 }
231
232 private void ThrowIfStreamCannotSeek(string method)
233 {
234 if (!_stream.CanSeek)
235 {
237 }
238 }
239
240 private void ThrowIfStreamCannotRead(string method)
241 {
242 if (!_stream.CanRead)
243 {
245 }
246 }
247
248 private void ThrowIfStreamCannotWrite(string method)
249 {
250 if (!_stream.CanWrite)
251 {
253 }
254 }
255
256 private void ThrowIfStreamClosed(string method)
257 {
258 if (IsStreamClosed())
259 {
261 }
262 }
263
264 private bool IsStreamClosed()
265 {
266 if (_isClosed || _stream == null || (!_stream.CanRead && !_stream.CanWrite && !_stream.CanSeek))
267 {
268 return true;
269 }
270 return false;
271 }
272}
static Exception InvalidSeekOrigin(string parameterName)
Definition ADP.cs:970
static string InvalidOpStreamNonSeekable(string method)
static string InvalidOpStreamNonWritable(string method)
static string InvalidOpStreamClosed(string method)
static string InvalidOpStreamNonReadable(string method)
override void Write(byte[] buffer, int offset, int count)
override long Seek(long offset, SeekOrigin origin)
override int Read(byte[] buffer, int offset, int count)
virtual int ReadByte()
Definition Stream.cs:994
void SetLength(long value)
long Seek(long offset, SeekOrigin origin)
int Read(byte[] buffer, int offset, int count)
void Write(byte[] buffer, int offset, int count)
virtual void WriteByte(byte value)
Definition Stream.cs:1020