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
- _AuthenticationState.cs
- HScrollProperties.cs
- ToolStripSettings.cs
- Base64Encoder.cs
- odbcmetadatafactory.cs
- SMSvcHost.cs
- SecurityDescriptor.cs
- RuntimeVariablesExpression.cs
- CultureInfo.cs
- DateTimeFormatInfoScanner.cs
- ItemDragEvent.cs
- TextFindEngine.cs
- ContainerFilterService.cs
- EntityStoreSchemaFilterEntry.cs
- CodeNamespaceImportCollection.cs
- ParameterRetriever.cs
- UriParserTemplates.cs
- ToolStripScrollButton.cs
- MobileControlsSectionHandler.cs
- ResourceExpression.cs
- LabelDesigner.cs
- XmlNodeReader.cs
- OleCmdHelper.cs
- XmlSortKeyAccumulator.cs
- MarkupCompilePass1.cs
- StickyNoteAnnotations.cs
- SafePipeHandle.cs
- EventPropertyMap.cs
- TemplateLookupAction.cs
- HtmlGenericControl.cs
- ParameterToken.cs
- TransactionState.cs
- NavigateUrlConverter.cs
- mediaeventshelper.cs
- BinaryReader.cs
- FixedStringLookup.cs
- SchemaCollectionCompiler.cs
- ErrorFormatterPage.cs
- DataSourceXmlSubItemAttribute.cs
- DesignerOptionService.cs
- SQLInt16Storage.cs
- TypeSystem.cs
- ProviderConnectionPoint.cs
- CustomValidator.cs
- SafeHandle.cs
- BitmapEffectInput.cs
- FileLogRecordStream.cs
- GenericRootAutomationPeer.cs
- BoundConstants.cs
- Base64Stream.cs
- NumericUpDownAccelerationCollection.cs
- StylusEventArgs.cs
- XslAst.cs
- CapabilitiesPattern.cs
- SimpleBitVector32.cs
- CryptoProvider.cs
- DataGridComponentEditor.cs
- FrameworkContentElementAutomationPeer.cs
- OleDbEnumerator.cs
- XmlDictionaryWriter.cs
- DesignerTransaction.cs
- ListenDesigner.cs
- EventPrivateKey.cs
- BitmapImage.cs
- PrintEvent.cs
- InternalUserCancelledException.cs
- ScriptingSectionGroup.cs
- ObjectToIdCache.cs
- KeyConverter.cs
- XPathBinder.cs
- OdbcConnection.cs
- PeerName.cs
- CompilerGlobalScopeAttribute.cs
- WhiteSpaceTrimStringConverter.cs
- PersistenceTypeAttribute.cs
- RadialGradientBrush.cs
- LabelExpression.cs
- ToolstripProfessionalRenderer.cs
- XamlStyleSerializer.cs
- HttpCachePolicyElement.cs
- SchemaMerger.cs
- XPathEmptyIterator.cs
- SafePEFileHandle.cs
- FaultDescriptionCollection.cs
- RegexGroupCollection.cs
- DesignerActionUI.cs
- Evaluator.cs
- ElementHost.cs
- XPathItem.cs
- RunWorkerCompletedEventArgs.cs
- KeyTimeConverter.cs
- CapabilitiesState.cs
- HtmlInputButton.cs
- ToggleButtonAutomationPeer.cs
- UnionCqlBlock.cs
- ValidatingCollection.cs
- RelationHandler.cs
- HotSpot.cs
- Parallel.cs
- CurrentTimeZone.cs