Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Activation / HostedNamedPipeTransportManager.cs / 1 / HostedNamedPipeTransportManager.cs
//---------------------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------------------- namespace System.ServiceModel.Activation { using System.Collections.Generic; using System.Diagnostics; using System.ServiceModel; using System.ServiceModel.Channels; using System.ServiceModel.Diagnostics; class HostedNamedPipeTransportManager : NamedPipeTransportManager { bool settingsApplied; OnViaDelegate onViaCallback; SharedConnectionListener listener; ConnectionDemuxer connectionDemuxer; int queueId; Guid token; OnDuplicatedViaDelegate onDuplicatedViaCallback; bool demuxerCreated; public HostedNamedPipeTransportManager(BaseUriWithWildcard baseAddress) : base(baseAddress.BaseAddress) { this.HostNameComparisonMode = baseAddress.HostNameComparisonMode; this.onViaCallback = new OnViaDelegate(OnVia); this.onDuplicatedViaCallback = new OnDuplicatedViaDelegate(OnDuplicatedVia); } protected override bool IsCompatible(NamedPipeChannelListener channelListener) { if (channelListener.HostedVirtualPath == null) { return false; } return base.IsCompatible(channelListener); } internal void Start(int queueId, Guid token, MessageReceivedCallback messageReceivedCallback) { SetMessageReceivedCallback(messageReceivedCallback); OnOpenInternal(queueId, token); } internal override void OnOpen() { // This is intentionally empty. } internal void Stop() { lock (ThisLock) { if (listener != null) { listener.Stop(); // The listener will be closed by the demuxer. listener = null; } if (connectionDemuxer != null) { connectionDemuxer.Dispose(); } demuxerCreated = false; settingsApplied = false; } } void CreateConnectionDemuxer() { IConnectionListener connectionListener = new BufferedConnectionListener(listener, MaxOutputDelay, ConnectionBufferSize); if (DiagnosticUtility.ShouldUseActivity) { connectionListener = new TracingConnectionListener(connectionListener, this.ListenUri); } connectionDemuxer = new ConnectionDemuxer(connectionListener, MaxPendingAccepts, MaxPendingConnections, ChannelInitializationTimeout, IdleTimeout, MaxPooledConnections, OnGetTransportFactorySettings, OnGetSingletonMessageHandler, OnHandleServerSessionPreamble, OnDemuxerError); connectionDemuxer.StartDemuxing(onViaCallback); } void OnOpenInternal(int queueId, Guid token) { lock (ThisLock) { this.queueId = queueId; this.token = token; BaseUriWithWildcard path = new BaseUriWithWildcard(this.ListenUri, this.HostNameComparisonMode); listener = new SharedConnectionListener(path, queueId, token, this.onDuplicatedViaCallback); } } internal override void OnClose() { Stop(); base.OnClose(); } void OnVia(Uri address) { Debug.Print("HostedNamedPipeTransportManager.OnVia() address: " + address + " calling EnsureServiceAvailable()"); ServiceHostingEnvironment.EnsureServiceAvailable(address.LocalPath); } protected override void OnSelecting(NamedPipeChannelListener channelListener) { if (settingsApplied) { return; } lock (ThisLock) { if (settingsApplied) { // Use the setting for the first one. return; } this.ApplyListenerSettings(channelListener); settingsApplied = true; } } // This method is called only for the first via of the current proxy. void OnDuplicatedVia(Uri via, out int connectionBufferSize) { OnVia(via); if (!demuxerCreated) { lock (ThisLock) { if (listener == null) { // The listener has been stopped. throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new CommunicationObjectAbortedException( SR.GetString(SR.Sharing_ListenerProxyStopped))); } if (!demuxerCreated) { CreateConnectionDemuxer(); demuxerCreated = true; } } } connectionBufferSize = this.ConnectionBufferSize; } } } // 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
- ResumeStoryboard.cs
- ConfigurationCollectionAttribute.cs
- COM2PropertyBuilderUITypeEditor.cs
- TypographyProperties.cs
- CacheHelper.cs
- FieldCollectionEditor.cs
- MsmqAppDomainProtocolHandler.cs
- HandlerWithFactory.cs
- ProtectedConfiguration.cs
- panel.cs
- X509UI.cs
- WsatTransactionHeader.cs
- DoubleAnimationUsingKeyFrames.cs
- WorkflowQueue.cs
- Ray3DHitTestResult.cs
- FlowDocumentReader.cs
- ByValueEqualityComparer.cs
- AsyncOperation.cs
- _DomainName.cs
- TemplateLookupAction.cs
- HttpRuntimeSection.cs
- SoapParser.cs
- UrlMapping.cs
- TreeViewBindingsEditor.cs
- DependencyPropertyConverter.cs
- PasswordRecoveryAutoFormat.cs
- Panel.cs
- DataControlButton.cs
- UInt32.cs
- ControlOperationBehavior.cs
- XamlHttpHandlerFactory.cs
- XmlTextReaderImplHelpers.cs
- TcpClientSocketManager.cs
- BuildDependencySet.cs
- HwndMouseInputProvider.cs
- UIElement3D.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- ServiceBuildProvider.cs
- ValidatingPropertiesEventArgs.cs
- XmlNavigatorFilter.cs
- XmlWrappingWriter.cs
- AppModelKnownContentFactory.cs
- DefaultMemberAttribute.cs
- AutomationElement.cs
- HTTP_SERVICE_CONFIG_URLACL_PARAM.cs
- FillRuleValidation.cs
- OleDbErrorCollection.cs
- BindingListCollectionView.cs
- PropertyEmitter.cs
- RadioButton.cs
- DateTimeHelper.cs
- FixedDocumentPaginator.cs
- PartialClassGenerationTaskInternal.cs
- SafeHandle.cs
- CommandHelpers.cs
- XmlQueryType.cs
- ToolStripSeparatorRenderEventArgs.cs
- DocumentsTrace.cs
- HtmlTitle.cs
- AdRotatorDesigner.cs
- AppSettingsSection.cs
- TemplateEditingService.cs
- EventDriven.cs
- FormsAuthentication.cs
- ReturnValue.cs
- ResXResourceReader.cs
- MulticastOption.cs
- PropertySourceInfo.cs
- SQLInt64Storage.cs
- ValidateNames.cs
- MessageQueueConverter.cs
- UnescapedXmlDiagnosticData.cs
- XmlAttributeOverrides.cs
- Keywords.cs
- Decimal.cs
- ExecutorLocksHeldException.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- CodeConstructor.cs
- grammarelement.cs
- PersonalizationProviderCollection.cs
- BamlMapTable.cs
- ArrayList.cs
- NumberFormatter.cs
- UpdateCompiler.cs
- ActionMessageFilter.cs
- WebServicesDescriptionAttribute.cs
- FileNotFoundException.cs
- ResolvePPIDRequest.cs
- FileUtil.cs
- ApplyImportsAction.cs
- ListBoxItemAutomationPeer.cs
- BigInt.cs
- peersecurityelement.cs
- MaskedTextBox.cs
- NumberEdit.cs
- XmlSchemaSimpleTypeList.cs
- OutputCacheSettings.cs
- ComPlusAuthorization.cs
- TemplateBindingExpressionConverter.cs
- Overlapped.cs