Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
WrappedStream.cs
Go to the documentation of this file.
3
5
6internal sealed class WrappedStream : Stream
7{
8 private readonly Stream _baseStream;
9
10 private readonly bool _closeBaseStream;
11
12 private readonly Action<ZipArchiveEntry> _onClosed;
13
15
16 private bool _isDisposed;
17
18 public override long Length
19 {
20 get
21 {
23 return _baseStream.Length;
24 }
25 }
26
27 public override long Position
28 {
29 get
30 {
32 return _baseStream.Position;
33 }
34 set
35 {
38 _baseStream.Position = value;
39 }
40 }
41
42 public override bool CanRead
43 {
44 get
45 {
46 if (!_isDisposed)
47 {
48 return _baseStream.CanRead;
49 }
50 return false;
51 }
52 }
53
54 public override bool CanSeek
55 {
56 get
57 {
58 if (!_isDisposed)
59 {
60 return _baseStream.CanSeek;
61 }
62 return false;
63 }
64 }
65
66 public override bool CanWrite
67 {
68 get
69 {
70 if (!_isDisposed)
71 {
72 return _baseStream.CanWrite;
73 }
74 return false;
75 }
76 }
77
78 internal WrappedStream(Stream baseStream, bool closeBaseStream)
79 : this(baseStream, closeBaseStream, null, null)
80 {
81 }
82
83 private WrappedStream(Stream baseStream, bool closeBaseStream, ZipArchiveEntry entry, Action<ZipArchiveEntry> onClosed)
84 {
85 _baseStream = baseStream;
86 _closeBaseStream = closeBaseStream;
87 _onClosed = onClosed;
88 _zipArchiveEntry = entry;
89 _isDisposed = false;
90 }
91
92 internal WrappedStream(Stream baseStream, ZipArchiveEntry entry, Action<ZipArchiveEntry> onClosed)
93 : this(baseStream, closeBaseStream: false, entry, onClosed)
94 {
95 }
96
97 private void ThrowIfDisposed()
98 {
99 if (_isDisposed)
100 {
102 }
103 }
104
105 private void ThrowIfCantRead()
106 {
107 if (!CanRead)
108 {
110 }
111 }
112
113 private void ThrowIfCantWrite()
114 {
115 if (!CanWrite)
116 {
118 }
119 }
120
121 private void ThrowIfCantSeek()
122 {
123 if (!CanSeek)
124 {
126 }
127 }
128
129 public override int Read(byte[] buffer, int offset, int count)
130 {
134 }
135
136 public override int Read(Span<byte> buffer)
137 {
140 return _baseStream.Read(buffer);
141 }
142
143 public override int ReadByte()
144 {
147 return _baseStream.ReadByte();
148 }
149
156
163
164 public override long Seek(long offset, SeekOrigin origin)
165 {
168 return _baseStream.Seek(offset, origin);
169 }
170
171 public override void SetLength(long value)
172 {
177 }
178
179 public override void Write(byte[] buffer, int offset, int count)
180 {
184 }
185
186 public override void Write(ReadOnlySpan<byte> source)
187 {
191 }
192
193 public override void WriteByte(byte value)
194 {
198 }
199
206
213
214 public override void Flush()
215 {
219 }
220
227
228 protected override void Dispose(bool disposing)
229 {
230 if (disposing && !_isDisposed)
231 {
234 {
236 }
237 _isDisposed = true;
238 }
239 base.Dispose(disposing);
240 }
241}
override Task< int > ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
override Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
override void Write(ReadOnlySpan< byte > source)
WrappedStream(Stream baseStream, bool closeBaseStream)
override void WriteByte(byte value)
WrappedStream(Stream baseStream, bool closeBaseStream, ZipArchiveEntry entry, Action< ZipArchiveEntry > onClosed)
override void Write(byte[] buffer, int offset, int count)
override int Read(byte[] buffer, int offset, int count)
readonly ZipArchiveEntry _zipArchiveEntry
override ValueTask< int > ReadAsync(Memory< byte > buffer, CancellationToken cancellationToken=default(CancellationToken))
override ValueTask WriteAsync(ReadOnlyMemory< byte > buffer, CancellationToken cancellationToken=default(CancellationToken))
WrappedStream(Stream baseStream, ZipArchiveEntry entry, Action< ZipArchiveEntry > onClosed)
override void SetLength(long value)
readonly Action< ZipArchiveEntry > _onClosed
override long Seek(long offset, SeekOrigin origin)
override Task FlushAsync(CancellationToken cancellationToken)
override int Read(Span< byte > buffer)
override void Dispose(bool disposing)
Task FlushAsync()
Definition Stream.cs:669
virtual int ReadByte()
Definition Stream.cs:994
void SetLength(long value)
long Seek(long offset, SeekOrigin origin)
Task WriteAsync(byte[] buffer, int offset, int count)
Definition Stream.cs:914
int Read(byte[] buffer, int offset, int count)
void Dispose()
Definition Stream.cs:639
Task< int > ReadAsync(byte[] buffer, int offset, int count)
Definition Stream.cs:762
void Write(byte[] buffer, int offset, int count)
virtual void WriteByte(byte value)
Definition Stream.cs:1020
static string SeekingNotSupported
Definition SR.cs:114
static string ReadingNotSupported
Definition SR.cs:108
static string WritingNotSupported
Definition SR.cs:130
static string HiddenStreamName
Definition SR.cs:100
Definition SR.cs:7