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
- DatagridviewDisplayedBandsData.cs
- ToolStripItemCollection.cs
- RenderData.cs
- XmlDataSource.cs
- DataListItemEventArgs.cs
- LogManagementAsyncResult.cs
- ImpersonateTokenRef.cs
- Math.cs
- OdbcStatementHandle.cs
- TaiwanCalendar.cs
- AsyncDataRequest.cs
- TrustManagerMoreInformation.cs
- GridViewColumnCollection.cs
- CodeTypeReferenceExpression.cs
- shaper.cs
- WebPartUserCapability.cs
- ContainsRowNumberChecker.cs
- Pair.cs
- StrokeSerializer.cs
- ClientBuildManager.cs
- TextFormatterImp.cs
- COM2TypeInfoProcessor.cs
- Region.cs
- _UriSyntax.cs
- XmlQualifiedNameTest.cs
- ListSourceHelper.cs
- BoundingRectTracker.cs
- WmlValidatorAdapter.cs
- BindingCompleteEventArgs.cs
- BitmapEffect.cs
- PeerTransportListenAddressConverter.cs
- IndependentAnimationStorage.cs
- ViewManager.cs
- FormsAuthenticationUserCollection.cs
- TypedTableBaseExtensions.cs
- ExternalCalls.cs
- HashSetEqualityComparer.cs
- CompilerTypeWithParams.cs
- XmlSchemaValidationException.cs
- BuildManager.cs
- QueryConverter.cs
- ColumnMap.cs
- Parallel.cs
- Stream.cs
- AccessText.cs
- WorkflowStateRollbackService.cs
- TraceContextRecord.cs
- SerializationObjectManager.cs
- Tokenizer.cs
- FormViewModeEventArgs.cs
- BaseTreeIterator.cs
- WindowsComboBox.cs
- _ListenerRequestStream.cs
- _WinHttpWebProxyDataBuilder.cs
- ResourceIDHelper.cs
- FeedUtils.cs
- RequiredAttributeAttribute.cs
- CategoryValueConverter.cs
- HandlerFactoryCache.cs
- BamlTreeUpdater.cs
- LambdaCompiler.Unary.cs
- MatchingStyle.cs
- TimeZone.cs
- TextContainerHelper.cs
- DeferredRunTextReference.cs
- ObjectFullSpanRewriter.cs
- StringFreezingAttribute.cs
- PersistChildrenAttribute.cs
- ToolStripRendererSwitcher.cs
- TableSectionStyle.cs
- xamlnodes.cs
- SqlXml.cs
- ServiceDebugElement.cs
- DisplayMemberTemplateSelector.cs
- Trigger.cs
- ContextDataSource.cs
- InternalCache.cs
- BamlMapTable.cs
- RecognizerInfo.cs
- ColorAnimationBase.cs
- WebResourceAttribute.cs
- EventPrivateKey.cs
- FileSystemWatcher.cs
- ShadowGlyph.cs
- PlainXmlSerializer.cs
- SqlDependencyUtils.cs
- NetSectionGroup.cs
- StatusBarAutomationPeer.cs
- JpegBitmapEncoder.cs
- PreProcessor.cs
- EnumValidator.cs
- TextSerializer.cs
- ConfigPathUtility.cs
- XmlEncodedRawTextWriter.cs
- ContainerVisual.cs
- TreeNodeSelectionProcessor.cs
- Page.cs
- PermissionAttributes.cs
- ConditionalAttribute.cs
- Parallel.cs