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
- UiaCoreApi.cs
- UIElementParaClient.cs
- ListBoxChrome.cs
- Misc.cs
- ExpressionBuilderCollection.cs
- WsatConfiguration.cs
- ContentTextAutomationPeer.cs
- DbException.cs
- StateRuntime.cs
- Table.cs
- PhysicalFontFamily.cs
- mediaeventshelper.cs
- DynamicDocumentPaginator.cs
- AdornerPresentationContext.cs
- DataServiceResponse.cs
- SolidColorBrush.cs
- ClientProxyGenerator.cs
- WmpBitmapEncoder.cs
- DataSourceControlBuilder.cs
- TabItem.cs
- MemberInfoSerializationHolder.cs
- CompilerErrorCollection.cs
- SvcFileManager.cs
- mediaclock.cs
- LinqDataSourceDisposeEventArgs.cs
- DataBindEngine.cs
- ImageCollectionCodeDomSerializer.cs
- TrackingWorkflowEventArgs.cs
- DefinitionBase.cs
- FontWeightConverter.cs
- SiteMapNodeItem.cs
- ListView.cs
- ExtensionDataReader.cs
- TableDetailsCollection.cs
- ParameterRetriever.cs
- AdornerHitTestResult.cs
- ComponentCommands.cs
- ContentPresenter.cs
- MediaPlayerState.cs
- TextServicesHost.cs
- ServiceModelActivationSectionGroup.cs
- CqlWriter.cs
- SqlProvider.cs
- ColorConvertedBitmap.cs
- ResourceWriter.cs
- MultiView.cs
- CodeSubDirectory.cs
- NavigationFailedEventArgs.cs
- TraceData.cs
- VirtualizedItemPattern.cs
- RegistryPermission.cs
- InputScope.cs
- ConfigurationManagerInternalFactory.cs
- Guid.cs
- PropertyItem.cs
- columnmapfactory.cs
- CheckBox.cs
- SizeAnimationClockResource.cs
- EntityParameter.cs
- TextContainerChangedEventArgs.cs
- FormsAuthenticationCredentials.cs
- CodeAttributeDeclarationCollection.cs
- AnimatedTypeHelpers.cs
- DbProviderServices.cs
- EventRouteFactory.cs
- XmlEventCache.cs
- XmlQualifiedName.cs
- Control.cs
- ExternalException.cs
- mediaeventargs.cs
- AsymmetricSignatureFormatter.cs
- DocumentEventArgs.cs
- ThreadPool.cs
- XPathMultyIterator.cs
- Vector3DConverter.cs
- FlowLayoutPanel.cs
- NgenServicingAttributes.cs
- CommandLibraryHelper.cs
- _ProxyRegBlob.cs
- ComponentSerializationService.cs
- XpsS0ValidatingLoader.cs
- UnsupportedPolicyOptionsException.cs
- CancellationHandlerDesigner.cs
- RegexCapture.cs
- ExpressionNode.cs
- XmlProcessingInstruction.cs
- SafeNativeMethods.cs
- XmlTextEncoder.cs
- objectquery_tresulttype.cs
- ConfigurationValue.cs
- AsyncWaitHandle.cs
- SqlDataSourceStatusEventArgs.cs
- Property.cs
- HtmlListAdapter.cs
- safex509handles.cs
- GenericTypeParameterBuilder.cs
- DetailsViewRow.cs
- DataGridViewComboBoxCell.cs
- VerticalAlignConverter.cs
- ColorComboBox.cs