Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / Net / System / Net / FtpWebResponse.cs / 1 / FtpWebResponse.cs
// ------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // // ----------------------------------------------------------------------------- // namespace System.Net { using System.Collections; using System.IO; using System.Net.Sockets; using System.Threading; using System.Security.Cryptography.X509Certificates ; using System.Security.Permissions; ////// public class FtpWebResponse : WebResponse, IDisposable { internal Stream m_ResponseStream; private long m_ContentLength; private Uri m_ResponseUri; private FtpStatusCode m_StatusCode; private string m_StatusLine; private WebHeaderCollection m_FtpRequestHeaders; private HttpWebResponse m_HttpWebResponse; private DateTime m_LastModified; private string m_BannerMessage; private string m_WelcomeMessage; private string m_ExitMessage; internal FtpWebResponse(Stream responseStream, long contentLength, Uri responseUri, FtpStatusCode statusCode, string statusLine, DateTime lastModified, string bannerMessage, string welcomeMessage, string exitMessage) { GlobalLog.Print("FtpWebResponse#" + ValidationHelper.HashString(this) + "::.ctor(" + contentLength.ToString() + ","+ statusLine+ ")"); m_ResponseStream = responseStream; if (responseStream == null && contentLength < 0) { contentLength = 0; } m_ContentLength = contentLength; m_ResponseUri = responseUri; m_StatusCode = statusCode; m_StatusLine = statusLine; m_LastModified = lastModified; m_BannerMessage = bannerMessage; m_WelcomeMessage = welcomeMessage; m_ExitMessage = exitMessage; } internal FtpWebResponse(HttpWebResponse httpWebResponse) { m_HttpWebResponse = httpWebResponse; InternalSetFromCache = m_HttpWebResponse.IsFromCache; InternalSetIsCacheFresh = m_HttpWebResponse.IsCacheFresh; } internal void UpdateStatus(FtpStatusCode statusCode, string statusLine, string exitMessage) { m_StatusCode = statusCode; m_StatusLine = statusLine; m_ExitMessage = exitMessage; } ///The FtpWebResponse class contains the result of the FTP request /// interface. ////// public override Stream GetResponseStream() { Stream responseStream = null; if (HttpProxyMode) { responseStream = m_HttpWebResponse.GetResponseStream(); } else if (m_ResponseStream != null) { responseStream = m_ResponseStream; } else { responseStream = m_ResponseStream = new EmptyStream(); } return responseStream; } // internal class EmptyStream: MemoryStream { internal EmptyStream():base(new byte[0], false) { } } // // Only used when combining cached and live responses // internal void SetResponseStream(Stream stream) { if (stream == null || stream == Stream.Null || stream is EmptyStream) return; m_ResponseStream = stream; } ///Returns a data stream for FTP ////// public override void Close() { if(Logging.On)Logging.Enter(Logging.Web, this, "Close", ""); if (HttpProxyMode) { m_HttpWebResponse.Close(); } else { Stream stream = m_ResponseStream; if (stream != null) { stream.Close(); } } if(Logging.On)Logging.Exit(Logging.Web, this, "Close", ""); } ///Closes the underlying FTP response stream, but does not close control connection ////// public override long ContentLength { get { if (HttpProxyMode) { return m_HttpWebResponse.ContentLength; } return m_ContentLength; } } internal void SetContentLength(long value) { if (HttpProxyMode) return; //m_HttpWebResponse.ContentLength = value; m_ContentLength = value; } ///Queries the length of the response ////// public override WebHeaderCollection Headers { get { if (HttpProxyMode) { return m_HttpWebResponse.Headers; } if (m_FtpRequestHeaders == null) { lock(this) { if (m_FtpRequestHeaders == null) { m_FtpRequestHeaders = new WebHeaderCollection(WebHeaderCollectionType.FtpWebResponse); } } } return m_FtpRequestHeaders; } } ////// A collection of headers, currently nothing is return except an empty collection /// ////// public override Uri ResponseUri { get { if (HttpProxyMode) { return m_HttpWebResponse.ResponseUri; } return m_ResponseUri; } } ///Shows the final Uri that the FTP request ended up on ////// public FtpStatusCode StatusCode { get { if (HttpProxyMode) { return ((FtpStatusCode) ((int) m_HttpWebResponse.StatusCode)); } return m_StatusCode; } } ///Last status code retrived ////// public string StatusDescription { get { if (HttpProxyMode) { return m_HttpWebResponse.StatusDescription; } return m_StatusLine; } } ///Last status line retrived ////// public DateTime LastModified { get { if (HttpProxyMode) { return m_HttpWebResponse.LastModified; } return m_LastModified; } } ///Returns last modified date time for given file (null if not relavant/avail) ////// public string BannerMessage { get { return m_BannerMessage; } } ///Returns the server message sent before user credentials are sent ////// public string WelcomeMessage { get { return m_WelcomeMessage; } } ///Returns the server message sent after user credentials are sent ////// public string ExitMessage { get { return m_ExitMessage; } } ///Returns the exit sent message on shutdown ////// private bool HttpProxyMode { get { return (m_HttpWebResponse != null); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ------------------------------------------------------------------------------ //True if request is just wrapping HttpWebRequest ///// Copyright (c) Microsoft Corporation. All rights reserved. // // ----------------------------------------------------------------------------- // namespace System.Net { using System.Collections; using System.IO; using System.Net.Sockets; using System.Threading; using System.Security.Cryptography.X509Certificates ; using System.Security.Permissions; ////// public class FtpWebResponse : WebResponse, IDisposable { internal Stream m_ResponseStream; private long m_ContentLength; private Uri m_ResponseUri; private FtpStatusCode m_StatusCode; private string m_StatusLine; private WebHeaderCollection m_FtpRequestHeaders; private HttpWebResponse m_HttpWebResponse; private DateTime m_LastModified; private string m_BannerMessage; private string m_WelcomeMessage; private string m_ExitMessage; internal FtpWebResponse(Stream responseStream, long contentLength, Uri responseUri, FtpStatusCode statusCode, string statusLine, DateTime lastModified, string bannerMessage, string welcomeMessage, string exitMessage) { GlobalLog.Print("FtpWebResponse#" + ValidationHelper.HashString(this) + "::.ctor(" + contentLength.ToString() + ","+ statusLine+ ")"); m_ResponseStream = responseStream; if (responseStream == null && contentLength < 0) { contentLength = 0; } m_ContentLength = contentLength; m_ResponseUri = responseUri; m_StatusCode = statusCode; m_StatusLine = statusLine; m_LastModified = lastModified; m_BannerMessage = bannerMessage; m_WelcomeMessage = welcomeMessage; m_ExitMessage = exitMessage; } internal FtpWebResponse(HttpWebResponse httpWebResponse) { m_HttpWebResponse = httpWebResponse; InternalSetFromCache = m_HttpWebResponse.IsFromCache; InternalSetIsCacheFresh = m_HttpWebResponse.IsCacheFresh; } internal void UpdateStatus(FtpStatusCode statusCode, string statusLine, string exitMessage) { m_StatusCode = statusCode; m_StatusLine = statusLine; m_ExitMessage = exitMessage; } ///The FtpWebResponse class contains the result of the FTP request /// interface. ////// public override Stream GetResponseStream() { Stream responseStream = null; if (HttpProxyMode) { responseStream = m_HttpWebResponse.GetResponseStream(); } else if (m_ResponseStream != null) { responseStream = m_ResponseStream; } else { responseStream = m_ResponseStream = new EmptyStream(); } return responseStream; } // internal class EmptyStream: MemoryStream { internal EmptyStream():base(new byte[0], false) { } } // // Only used when combining cached and live responses // internal void SetResponseStream(Stream stream) { if (stream == null || stream == Stream.Null || stream is EmptyStream) return; m_ResponseStream = stream; } ///Returns a data stream for FTP ////// public override void Close() { if(Logging.On)Logging.Enter(Logging.Web, this, "Close", ""); if (HttpProxyMode) { m_HttpWebResponse.Close(); } else { Stream stream = m_ResponseStream; if (stream != null) { stream.Close(); } } if(Logging.On)Logging.Exit(Logging.Web, this, "Close", ""); } ///Closes the underlying FTP response stream, but does not close control connection ////// public override long ContentLength { get { if (HttpProxyMode) { return m_HttpWebResponse.ContentLength; } return m_ContentLength; } } internal void SetContentLength(long value) { if (HttpProxyMode) return; //m_HttpWebResponse.ContentLength = value; m_ContentLength = value; } ///Queries the length of the response ////// public override WebHeaderCollection Headers { get { if (HttpProxyMode) { return m_HttpWebResponse.Headers; } if (m_FtpRequestHeaders == null) { lock(this) { if (m_FtpRequestHeaders == null) { m_FtpRequestHeaders = new WebHeaderCollection(WebHeaderCollectionType.FtpWebResponse); } } } return m_FtpRequestHeaders; } } ////// A collection of headers, currently nothing is return except an empty collection /// ////// public override Uri ResponseUri { get { if (HttpProxyMode) { return m_HttpWebResponse.ResponseUri; } return m_ResponseUri; } } ///Shows the final Uri that the FTP request ended up on ////// public FtpStatusCode StatusCode { get { if (HttpProxyMode) { return ((FtpStatusCode) ((int) m_HttpWebResponse.StatusCode)); } return m_StatusCode; } } ///Last status code retrived ////// public string StatusDescription { get { if (HttpProxyMode) { return m_HttpWebResponse.StatusDescription; } return m_StatusLine; } } ///Last status line retrived ////// public DateTime LastModified { get { if (HttpProxyMode) { return m_HttpWebResponse.LastModified; } return m_LastModified; } } ///Returns last modified date time for given file (null if not relavant/avail) ////// public string BannerMessage { get { return m_BannerMessage; } } ///Returns the server message sent before user credentials are sent ////// public string WelcomeMessage { get { return m_WelcomeMessage; } } ///Returns the server message sent after user credentials are sent ////// public string ExitMessage { get { return m_ExitMessage; } } ///Returns the exit sent message on shutdown ////// private bool HttpProxyMode { get { return (m_HttpWebResponse != null); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.True if request is just wrapping HttpWebRequest ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DesignBindingPropertyDescriptor.cs
- _CacheStreams.cs
- SSmlParser.cs
- SelectedPathEditor.cs
- Scheduler.cs
- ArrayList.cs
- WebCategoryAttribute.cs
- RecognizerInfo.cs
- OdbcException.cs
- ZoneMembershipCondition.cs
- DoubleAnimationClockResource.cs
- AppDomainProtocolHandler.cs
- ComponentCollection.cs
- TypeDescriptionProviderAttribute.cs
- PolicyVersion.cs
- TypeKeyValue.cs
- ProfessionalColors.cs
- BrowserCapabilitiesCodeGenerator.cs
- BitmapFrame.cs
- PointF.cs
- DescendantBaseQuery.cs
- MouseGesture.cs
- ErrorTolerantObjectWriter.cs
- TempEnvironment.cs
- XmlSchemaException.cs
- XmlMembersMapping.cs
- PageParser.cs
- ToolStripContainer.cs
- WebPartConnection.cs
- DetailsViewRow.cs
- SslSecurityTokenParameters.cs
- HostProtectionException.cs
- ParagraphResult.cs
- ContentPosition.cs
- PropertyNames.cs
- Vector3DIndependentAnimationStorage.cs
- CharAnimationUsingKeyFrames.cs
- ToolStripSplitStackLayout.cs
- ProfileProvider.cs
- FreezableDefaultValueFactory.cs
- StackOverflowException.cs
- RemoveStoryboard.cs
- ChildDocumentBlock.cs
- HandlerFactoryCache.cs
- COM2AboutBoxPropertyDescriptor.cs
- PipelineModuleStepContainer.cs
- DiagnosticStrings.cs
- PageCache.cs
- SqlServer2KCompatibilityAnnotation.cs
- GridViewColumnHeader.cs
- ValueUnavailableException.cs
- XmlCollation.cs
- MarkedHighlightComponent.cs
- JpegBitmapEncoder.cs
- CodeObject.cs
- RTLAwareMessageBox.cs
- DataGridCellEditEndingEventArgs.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- CacheDependency.cs
- SharedStream.cs
- PipelineModuleStepContainer.cs
- XamlPoint3DCollectionSerializer.cs
- GenericXmlSecurityToken.cs
- filewebrequest.cs
- LocatorPartList.cs
- wgx_exports.cs
- AsyncCompletedEventArgs.cs
- ByteStreamGeometryContext.cs
- Route.cs
- XmlNodeComparer.cs
- EventHandlers.cs
- StylusButton.cs
- MobileListItemCollection.cs
- Table.cs
- Clause.cs
- Sql8ConformanceChecker.cs
- FunctionNode.cs
- Model3DGroup.cs
- RequestQueryProcessor.cs
- HttpModuleCollection.cs
- CacheMemory.cs
- FormatException.cs
- WebServiceMethodData.cs
- ComponentRenameEvent.cs
- TextTreeText.cs
- _NegoStream.cs
- TypeSemantics.cs
- ISFClipboardData.cs
- StylusEditingBehavior.cs
- DifferencingCollection.cs
- BuildResultCache.cs
- XmlImplementation.cs
- DelegateSerializationHolder.cs
- CodeNamespaceCollection.cs
- TypeTypeConverter.cs
- DataControlCommands.cs
- Speller.cs
- MatrixStack.cs
- SinglePageViewer.cs
- TextTreeTextNode.cs