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
- DeploymentSectionCache.cs
- UnSafeCharBuffer.cs
- RotationValidation.cs
- HyperLinkStyle.cs
- RootContext.cs
- ZoneButton.cs
- linebase.cs
- TrackingLocationCollection.cs
- CodeIdentifier.cs
- CultureInfoConverter.cs
- HwndHostAutomationPeer.cs
- RemoteWebConfigurationHostStream.cs
- FixedTextPointer.cs
- DataTableMapping.cs
- Vector3DConverter.cs
- Brush.cs
- RecordBuilder.cs
- ToolTipAutomationPeer.cs
- AnnouncementEventArgs.cs
- EntryPointNotFoundException.cs
- RangeBaseAutomationPeer.cs
- ITextView.cs
- ProcessThreadCollection.cs
- NamespaceList.cs
- TlsnegoTokenProvider.cs
- ClientSideQueueItem.cs
- CodeThrowExceptionStatement.cs
- _HelperAsyncResults.cs
- SiteMapHierarchicalDataSourceView.cs
- SQLMoneyStorage.cs
- CacheEntry.cs
- DtrList.cs
- EmptyStringExpandableObjectConverter.cs
- PeerToPeerException.cs
- MissingFieldException.cs
- DataGridViewEditingControlShowingEventArgs.cs
- IssuedTokenServiceElement.cs
- BinaryObjectWriter.cs
- _CommandStream.cs
- KnownTypesHelper.cs
- ProxyAttribute.cs
- DataGridViewRowConverter.cs
- CancelEventArgs.cs
- XpsFixedDocumentSequenceReaderWriter.cs
- PropertyRecord.cs
- GridView.cs
- FormattedTextSymbols.cs
- NonParentingControl.cs
- XNodeSchemaApplier.cs
- CancelRequestedRecord.cs
- XmlUnspecifiedAttribute.cs
- SerialReceived.cs
- VarInfo.cs
- DataStreams.cs
- ShaderRenderModeValidation.cs
- ManagementPath.cs
- BidPrivateBase.cs
- RowVisual.cs
- PropertyDescriptorGridEntry.cs
- PrivateFontCollection.cs
- StopStoryboard.cs
- ToolBarButton.cs
- TypographyProperties.cs
- DecoderReplacementFallback.cs
- ModelFunction.cs
- ScriptingSectionGroup.cs
- DataGridViewIntLinkedList.cs
- glyphs.cs
- SHA1CryptoServiceProvider.cs
- TextDecorations.cs
- safesecurityhelperavalon.cs
- ConstantExpression.cs
- SqlBulkCopyColumnMappingCollection.cs
- LineSegment.cs
- FormatConvertedBitmap.cs
- PermissionToken.cs
- RegistryPermission.cs
- AnyReturnReader.cs
- CustomAttributeBuilder.cs
- EnumUnknown.cs
- XmlAttributeCollection.cs
- BackStopAuthenticationModule.cs
- AppDomainProtocolHandler.cs
- Transform3DGroup.cs
- StateManagedCollection.cs
- ChannelOptions.cs
- UnmanagedMemoryStream.cs
- OleDbConnectionInternal.cs
- EntityDataSourceChangingEventArgs.cs
- SymbolDocumentInfo.cs
- PropertyDescriptorComparer.cs
- HtmlContainerControl.cs
- KeyValuePairs.cs
- FlowNode.cs
- WebPartManager.cs
- HostedImpersonationContext.cs
- DataGridItemCollection.cs
- InheritablePropertyChangeInfo.cs
- SmiEventSink_DeferedProcessing.cs
- DBCommand.cs