Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.ServiceModel.Discovery / System / ServiceModel / Discovery / DiscoveryClientChannelFactory.cs / 1305376 / DiscoveryClientChannelFactory.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.ServiceModel.Discovery { using System; using System.Runtime; using System.ServiceModel; using System.ServiceModel.Channels; class DiscoveryClientChannelFactory: ChannelFactoryBase { DiscoveryEndpointProvider discoveryEndpointProvider; FindCriteria findCriteria; IChannelFactory innerChannelFactory; public DiscoveryClientChannelFactory(IChannelFactory innerChannelFactory, FindCriteria findCriteria, DiscoveryEndpointProvider discoveryEndpointProvider) { Fx.Assert(findCriteria != null, "The findCriteria must be non null."); Fx.Assert(discoveryEndpointProvider != null, "The discoveryEndpointProvider must be non null."); Fx.Assert(innerChannelFactory != null, "The innerChannelFactory must be non null."); this.findCriteria = findCriteria; this.discoveryEndpointProvider = discoveryEndpointProvider; this.innerChannelFactory = innerChannelFactory; } protected override TChannel OnCreateChannel(EndpointAddress address, Uri via) { if (!address.Equals(DiscoveryClientBindingElement.DiscoveryEndpointAddress)) { throw FxTrace.Exception.Argument( "address", Discovery.SR.DiscoveryEndpointAddressIncorrect("address", address.Uri, DiscoveryClientBindingElement.DiscoveryEndpointAddress.Uri)); } if (!via.Equals(DiscoveryClientBindingElement.DiscoveryEndpointAddress.Uri)) { throw FxTrace.Exception.Argument( "via", Discovery.SR.DiscoveryEndpointAddressIncorrect("via", via, DiscoveryClientBindingElement.DiscoveryEndpointAddress.Uri)); } if (typeof(TChannel) == typeof(IOutputChannel)) { return (TChannel)(object)new DiscoveryClientOutputChannel ( this, (IChannelFactory )this.innerChannelFactory, this.findCriteria, this.discoveryEndpointProvider); } else if (typeof(TChannel) == typeof(IRequestChannel)) { return (TChannel)(object)new DiscoveryClientRequestChannel ( this, (IChannelFactory )this.innerChannelFactory, this.findCriteria, this.discoveryEndpointProvider); } else if (typeof(TChannel) == typeof(IDuplexChannel)) { return (TChannel)(object)new DiscoveryClientDuplexChannel ( this, (IChannelFactory )this.innerChannelFactory, this.findCriteria, this.discoveryEndpointProvider); } else if (typeof(TChannel) == typeof(IOutputSessionChannel)) { return (TChannel)(object)new DiscoveryClientOutputSessionChannel( this, (IChannelFactory )this.innerChannelFactory, this.findCriteria, this.discoveryEndpointProvider); } else if (typeof(TChannel) == typeof(IRequestSessionChannel)) { return (TChannel)(object)new DiscoveryClientRequestSessionChannel( this, (IChannelFactory )this.innerChannelFactory, this.findCriteria, this.discoveryEndpointProvider); } else if (typeof(TChannel) == typeof(IDuplexSessionChannel)) { return (TChannel)(object)new DiscoveryClientDuplexSessionChannel( this, (IChannelFactory )this.innerChannelFactory, this.findCriteria, this.discoveryEndpointProvider); } throw FxTrace.Exception.Argument("TChannel", ServiceModel.SR.GetString(ServiceModel.SR.ChannelTypeNotSupported, typeof(TChannel))); } public override T GetProperty () { if (typeof(T) == typeof(IChannelFactory )) { return (T)(object)this; } T baseProperty = base.GetProperty (); if (baseProperty != null) { return baseProperty; } return this.innerChannelFactory.GetProperty (); } protected override IAsyncResult OnBeginOpen(TimeSpan timeout, AsyncCallback callback, object state) { return this.innerChannelFactory.BeginOpen(timeout, callback, state); } protected override void OnEndOpen(IAsyncResult result) { this.innerChannelFactory.EndOpen(result); } protected override void OnOpen(TimeSpan timeout) { this.innerChannelFactory.Open(timeout); } protected override IAsyncResult OnBeginClose(TimeSpan timeout, AsyncCallback callback, object state) { // Must close higher channels before closing lower channels. return new ChainedAsyncResult( timeout, callback, state, base.OnBeginClose, base.OnEndClose, this.innerChannelFactory.BeginClose, this.innerChannelFactory.EndClose); } protected override void OnEndClose(IAsyncResult result) { ChainedAsyncResult.End(result); } protected override void OnClose(TimeSpan timeout) { // Must close higher channels before closing lower channels. TimeoutHelper timeoutHelper = new TimeoutHelper(timeout); base.OnClose(timeoutHelper.RemainingTime()); this.innerChannelFactory.Close(timeoutHelper.RemainingTime()); } protected override void OnAbort() { // Must abort higher channels before aborting lower channels. base.OnAbort(); this.innerChannelFactory.Abort(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ExtendedPropertyCollection.cs
- MediaCommands.cs
- ChtmlImageAdapter.cs
- DropTarget.cs
- WebFormDesignerActionService.cs
- DbConnectionPoolGroup.cs
- HtmlMeta.cs
- SoapTypeAttribute.cs
- RecommendedAsConfigurableAttribute.cs
- DPCustomTypeDescriptor.cs
- FlowDocumentPageViewerAutomationPeer.cs
- WebPartTransformerCollection.cs
- ToolboxItemCollection.cs
- SharedPerformanceCounter.cs
- GcHandle.cs
- DependencyPropertyAttribute.cs
- BaseTreeIterator.cs
- DragSelectionMessageFilter.cs
- BitmapFrameEncode.cs
- SettingsSection.cs
- XmlILOptimizerVisitor.cs
- SqlUdtInfo.cs
- Compiler.cs
- Int16.cs
- Parameter.cs
- ResourceContainer.cs
- CodeStatementCollection.cs
- BackgroundWorker.cs
- RunClient.cs
- TreeWalker.cs
- SRGSCompiler.cs
- DesignerVerbCollection.cs
- ProjectionAnalyzer.cs
- TraceListener.cs
- SystemResourceHost.cs
- ResourceAttributes.cs
- XmlArrayAttribute.cs
- MgmtResManager.cs
- DefaultExpressionVisitor.cs
- IssuanceTokenProviderBase.cs
- BooleanConverter.cs
- _BasicClient.cs
- SplitContainer.cs
- InstanceLockedException.cs
- DataListCommandEventArgs.cs
- NumericPagerField.cs
- RemotingAttributes.cs
- CodeChecksumPragma.cs
- AuthenticationModulesSection.cs
- SectionInformation.cs
- PropertyItemInternal.cs
- GlyphsSerializer.cs
- RouteUrlExpressionBuilder.cs
- OleDbReferenceCollection.cs
- activationcontext.cs
- ByteStack.cs
- ErrorRuntimeConfig.cs
- PackWebResponse.cs
- ToolStripRenderEventArgs.cs
- DictionarySectionHandler.cs
- SQLInt64Storage.cs
- CommandDevice.cs
- PingReply.cs
- ParameterBuilder.cs
- Drawing.cs
- TextAction.cs
- PopupEventArgs.cs
- ProfileInfo.cs
- ControlIdConverter.cs
- WebPartConnectionCollection.cs
- SplitterDesigner.cs
- SqlUDTStorage.cs
- AuthenticationManager.cs
- RequestContext.cs
- storepermission.cs
- DebuggerAttributes.cs
- controlskin.cs
- DesignerValidationSummaryAdapter.cs
- FrameSecurityDescriptor.cs
- BitmapMetadataEnumerator.cs
- BitmapEffectDrawing.cs
- WebEncodingValidator.cs
- GlyphElement.cs
- PagerSettings.cs
- WebConfigurationHostFileChange.cs
- SQLBoolean.cs
- BufferedGraphics.cs
- DataSourceExpression.cs
- UInt64Storage.cs
- dsa.cs
- EraserBehavior.cs
- FacetDescription.cs
- ProfileBuildProvider.cs
- DataGridViewColumnStateChangedEventArgs.cs
- XPathConvert.cs
- RectAnimationBase.cs
- ConfigurationLockCollection.cs
- XmlBaseWriter.cs
- CommandHelper.cs
- SchemaMerger.cs