Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
FtpWebResponse.cs
Go to the documentation of this file.
1using System.IO;
2
3namespace System.Net;
4
6{
7 internal sealed class EmptyStream : MemoryStream
8 {
9 internal EmptyStream()
10 : base(Array.Empty<byte>(), writable: false)
11 {
12 }
13 }
14
16
17 private readonly long _contentLength;
18
19 private readonly Uri _responseUri;
20
22
23 private string _statusLine;
24
26
27 private readonly DateTime _lastModified;
28
29 private readonly string _bannerMessage;
30
31 private readonly string _welcomeMessage;
32
33 private string _exitMessage;
34
35 public override long ContentLength => _contentLength;
36
37 public override WebHeaderCollection Headers
38 {
39 get
40 {
41 if (_ftpRequestHeaders == null)
42 {
43 lock (this)
44 {
45 if (_ftpRequestHeaders == null)
46 {
48 }
49 }
50 }
51 return _ftpRequestHeaders;
52 }
53 }
54
55 public override bool SupportsHeaders => true;
56
57 public override Uri ResponseUri => _responseUri;
58
60
61 public string? StatusDescription => _statusLine;
62
64
65 public string? BannerMessage => _bannerMessage;
66
68
69 public string? ExitMessage => _exitMessage;
70
71 internal FtpWebResponse(Stream responseStream, long contentLength, Uri responseUri, FtpStatusCode statusCode, string statusLine, DateTime lastModified, string bannerMessage, string welcomeMessage, string exitMessage)
72 {
73 _responseStream = responseStream;
74 if (responseStream == null && contentLength < 0)
75 {
76 contentLength = 0L;
77 }
78 _contentLength = contentLength;
79 _responseUri = responseUri;
80 _statusCode = statusCode;
81 _statusLine = statusLine;
82 _lastModified = lastModified;
83 _bannerMessage = bannerMessage;
84 _welcomeMessage = welcomeMessage;
85 _exitMessage = exitMessage;
86 }
87
88 internal void UpdateStatus(FtpStatusCode statusCode, string statusLine, string exitMessage)
89 {
90 _statusCode = statusCode;
91 _statusLine = statusLine;
92 _exitMessage = exitMessage;
93 }
94
95 public override Stream GetResponseStream()
96 {
97 Stream stream = null;
98 if (_responseStream != null)
99 {
100 return _responseStream;
101 }
102 return _responseStream = new EmptyStream();
103 }
104
106 {
107 if (stream != null && stream != Stream.Null && !(stream is EmptyStream))
108 {
110 }
111 }
112
113 public override void Close()
114 {
116 }
117}
virtual void Close()
Definition Stream.cs:644
static readonly Stream Null
Definition Stream.cs:488
void UpdateStatus(FtpStatusCode statusCode, string statusLine, string exitMessage)
FtpWebResponse(Stream responseStream, long contentLength, Uri responseUri, FtpStatusCode statusCode, string statusLine, DateTime lastModified, string bannerMessage, string welcomeMessage, string exitMessage)
readonly string _welcomeMessage
override Stream GetResponseStream()
readonly string _bannerMessage
WebHeaderCollection _ftpRequestHeaders
readonly DateTime _lastModified
void SetResponseStream(Stream stream)