Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Net / System / Net / HybridWebProxyFinder.cs / 1305376 / HybridWebProxyFinder.cs
using System; using System.Collections.Generic; using System.Diagnostics; namespace System.Net { // This class behaves the same as WinHttpWebProxyFinder. The only difference is that in cases where // the script location has a scheme != HTTP, it falls back to NetWebProxyFinder which supports // also other schemes like FILE and FTP. // The mid-term goal for WinHttp is to support at least FILE scheme since it was already requested // by customers. The long term goal for System.Net is to use WinHttp only and remove this class // as well as NetWebProxyFinder. internal sealed class HybridWebProxyFinder : IWebProxyFinder { private NetWebProxyFinder netFinder; private WinHttpWebProxyFinder winHttpFinder; private BaseWebProxyFinder currentFinder; private AutoWebProxyScriptEngine engine; public HybridWebProxyFinder(AutoWebProxyScriptEngine engine) { this.engine = engine; this.winHttpFinder = new WinHttpWebProxyFinder(engine); this.currentFinder = winHttpFinder; } public bool IsValid { get { return currentFinder.IsValid; } } public bool GetProxies(Uri destination, out IListproxyList) { if (currentFinder.GetProxies(destination, out proxyList)) { return true; } if (currentFinder.IsUnrecognizedScheme && (currentFinder == winHttpFinder)) { // If WinHttpWebProxyFinder failed because the script location has a != HTTP scheme, // fall back to NetWebProxyFinder which supports also other schemes. if (netFinder == null) { netFinder = new NetWebProxyFinder(engine); } currentFinder = netFinder; return currentFinder.GetProxies(destination, out proxyList); } // Something else went wrong. Falling back to NetWebProxyFinder wouldn't help. return false; } public void Abort() { // Abort only the current finder. There is no need to abort the other one (which is either // uninitialized, i.e. not used yet, or we have an unrecognized-scheme state, which should // not be changed). currentFinder.Abort(); } public void Reset() { winHttpFinder.Reset(); if (netFinder != null) { netFinder.Reset(); } // Some settings changed, so let's reset the current finder to WinHttpWebProxyFinder, since // now it may work (if it didn't already before). currentFinder = winHttpFinder; } public void Dispose() { Dispose(true); } private void Dispose(bool disposing) { if (disposing) { winHttpFinder.Dispose(); if (netFinder != null) { netFinder.Dispose(); } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Tracer.cs
- categoryentry.cs
- URLIdentityPermission.cs
- TextRunCache.cs
- XmlNamespaceMapping.cs
- MetabaseServerConfig.cs
- UICuesEvent.cs
- ServiceDescriptionContext.cs
- EmbeddedMailObjectsCollection.cs
- ContractNamespaceAttribute.cs
- ScrollChrome.cs
- ADMembershipUser.cs
- SeekStoryboard.cs
- ReadOnlyTernaryTree.cs
- KnownColorTable.cs
- SolidBrush.cs
- CalendarDateChangedEventArgs.cs
- DataPagerFieldCommandEventArgs.cs
- XmlTypeMapping.cs
- JsonMessageEncoderFactory.cs
- IPEndPointCollection.cs
- CodeArgumentReferenceExpression.cs
- UrlPath.cs
- WebPartCloseVerb.cs
- StringKeyFrameCollection.cs
- TypeBuilderInstantiation.cs
- LookupNode.cs
- XPathNavigatorKeyComparer.cs
- ConfigurationManager.cs
- SharedStream.cs
- ListViewCancelEventArgs.cs
- TextTreeFixupNode.cs
- XamlReader.cs
- DataGridViewDataConnection.cs
- Globals.cs
- AnimationClock.cs
- ButtonRenderer.cs
- TextRangeAdaptor.cs
- RenderingBiasValidation.cs
- TraceSection.cs
- MachineKey.cs
- PolyBezierSegment.cs
- Latin1Encoding.cs
- Shape.cs
- xmlfixedPageInfo.cs
- GeometryConverter.cs
- DataGridViewRow.cs
- ReturnValue.cs
- ClassData.cs
- PageContentAsyncResult.cs
- ToolboxItemFilterAttribute.cs
- HttpListenerContext.cs
- UnmanagedBitmapWrapper.cs
- FontFamilyIdentifier.cs
- FastPropertyAccessor.cs
- EmbossBitmapEffect.cs
- CustomAttribute.cs
- OdbcConnection.cs
- ImportFileRequest.cs
- MailWebEventProvider.cs
- ActivityAction.cs
- BinaryParser.cs
- WebPartZoneBase.cs
- InitializingNewItemEventArgs.cs
- ReadOnlyHierarchicalDataSourceView.cs
- Encoding.cs
- BackStopAuthenticationModule.cs
- AddIn.cs
- BindingMemberInfo.cs
- _BufferOffsetSize.cs
- XmlSchemaComplexType.cs
- sitestring.cs
- ServicePoint.cs
- MasterPageCodeDomTreeGenerator.cs
- DtrList.cs
- OracleCommandSet.cs
- XmlElementAttributes.cs
- OpenTypeLayout.cs
- X509CertificateCollection.cs
- HatchBrush.cs
- VoiceObjectToken.cs
- AnimationException.cs
- ChangeConflicts.cs
- BooleanAnimationBase.cs
- _TLSstream.cs
- ping.cs
- Types.cs
- PrePrepareMethodAttribute.cs
- XamlFigureLengthSerializer.cs
- GlyphRun.cs
- HttpListener.cs
- PreProcessor.cs
- RowCache.cs
- CDSsyncETWBCLProvider.cs
- AnchoredBlock.cs
- DotExpr.cs
- TableRowGroup.cs
- TripleDESCryptoServiceProvider.cs
- ValueExpressions.cs
- InputBuffer.cs