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
- SpnEndpointIdentity.cs
- LicenseException.cs
- Blend.cs
- WebPartZoneBaseDesigner.cs
- CodePageEncoding.cs
- CompilerGeneratedAttribute.cs
- EditorZone.cs
- SingleQueryOperator.cs
- AssertSection.cs
- Location.cs
- BamlTreeNode.cs
- MenuDesigner.cs
- JavaScriptSerializer.cs
- XmlNavigatorStack.cs
- AsyncSerializedWorker.cs
- Variant.cs
- SqlCommandSet.cs
- DataTableTypeConverter.cs
- JournalEntryStack.cs
- Point3DCollectionConverter.cs
- CharKeyFrameCollection.cs
- TableLayoutSettings.cs
- PieceNameHelper.cs
- WSDualHttpSecurity.cs
- PartitionerStatic.cs
- MultilineStringConverter.cs
- ProcessInfo.cs
- ThreadExceptionDialog.cs
- _CookieModule.cs
- FrameworkContextData.cs
- CollectionBuilder.cs
- PeerPresenceInfo.cs
- SystemColorTracker.cs
- TableLayout.cs
- PaperSize.cs
- Binding.cs
- OptionUsage.cs
- PackagePartCollection.cs
- ScalarOps.cs
- TransformCryptoHandle.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- ReadingWritingEntityEventArgs.cs
- WindowsListViewGroup.cs
- AbandonedMutexException.cs
- LoginCancelEventArgs.cs
- Animatable.cs
- DataGridColumnDropSeparator.cs
- FunctionCommandText.cs
- BindingNavigator.cs
- CharEnumerator.cs
- _Connection.cs
- UrlPath.cs
- DefaultMemberAttribute.cs
- TokenBasedSet.cs
- NativeWindow.cs
- CacheVirtualItemsEvent.cs
- HttpCapabilitiesBase.cs
- ChooseAction.cs
- DataBindEngine.cs
- Vector3DConverter.cs
- TraceInternal.cs
- HtmlEmptyTagControlBuilder.cs
- Panel.cs
- RouteValueDictionary.cs
- Opcode.cs
- ApplicationGesture.cs
- Animatable.cs
- Array.cs
- CancelRequestedQuery.cs
- ConfigurationSchemaErrors.cs
- QilReference.cs
- SoapSchemaMember.cs
- EventSetter.cs
- LinqDataSourceView.cs
- CachedResourceDictionaryExtension.cs
- CodeExpressionCollection.cs
- FontStyleConverter.cs
- LocationChangedEventArgs.cs
- EntityClassGenerator.cs
- Single.cs
- BaseAppDomainProtocolHandler.cs
- CompilationUtil.cs
- ProtocolProfile.cs
- UIElementParaClient.cs
- DisposableCollectionWrapper.cs
- TableRowCollection.cs
- MgmtConfigurationRecord.cs
- Validator.cs
- DefinitionProperties.cs
- EdmScalarPropertyAttribute.cs
- RelatedPropertyManager.cs
- RegexRunner.cs
- EntityDesignPluralizationHandler.cs
- WindowsMenu.cs
- ConfigurationManagerInternalFactory.cs
- CodeSnippetTypeMember.cs
- HttpCapabilitiesBase.cs
- DbReferenceCollection.cs
- ComboBoxItem.cs
- EventProviderWriter.cs