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
- Point4DValueSerializer.cs
- TimeoutException.cs
- LocalizabilityAttribute.cs
- ConfigurationStrings.cs
- TemplateControlParser.cs
- Pen.cs
- ToolStripPanelRow.cs
- DiagnosticsConfiguration.cs
- TableCell.cs
- Transform3DCollection.cs
- MarkerProperties.cs
- Gdiplus.cs
- StreamGeometry.cs
- InvalidCastException.cs
- CodeThrowExceptionStatement.cs
- InlinedAggregationOperator.cs
- VectorCollection.cs
- DataGridViewControlCollection.cs
- StringUtil.cs
- ObjRef.cs
- DocumentScope.cs
- ReversePositionQuery.cs
- Globals.cs
- WindowsTooltip.cs
- TextDecorationUnitValidation.cs
- FixedSOMElement.cs
- DragStartedEventArgs.cs
- DetailsView.cs
- NativeMsmqMessage.cs
- X509CertificateChain.cs
- CounterCreationData.cs
- PointAnimationClockResource.cs
- ProcessHostFactoryHelper.cs
- HtmlImage.cs
- GridViewAutoFormat.cs
- CheckPair.cs
- ClosableStream.cs
- TextTreeFixupNode.cs
- SecurityUniqueId.cs
- ChannelFactoryBase.cs
- AddInAdapter.cs
- StrongNameKeyPair.cs
- StringBlob.cs
- BreakSafeBase.cs
- ContentOperations.cs
- Column.cs
- CodeLinePragma.cs
- SelectionProcessor.cs
- InputMethodStateTypeInfo.cs
- AssemblyCollection.cs
- X509Extension.cs
- ErrorWebPart.cs
- DataServiceRequest.cs
- WebBrowserNavigatingEventHandler.cs
- _SafeNetHandles.cs
- XmlCharCheckingReader.cs
- DriveInfo.cs
- Model3DGroup.cs
- QuaternionConverter.cs
- DesignSurface.cs
- SqlWorkflowInstanceStoreLock.cs
- ParentQuery.cs
- TargetParameterCountException.cs
- CookieParameter.cs
- HtmlImage.cs
- DataPagerFieldCollection.cs
- RegexCaptureCollection.cs
- QueryParameter.cs
- GridEntryCollection.cs
- WsdlWriter.cs
- SoapExtension.cs
- BaseDataListActionList.cs
- GZipStream.cs
- PersistenceTypeAttribute.cs
- ExpressionWriter.cs
- DesignerOptions.cs
- ReadOnlyActivityGlyph.cs
- OperationAbortedException.cs
- FamilyTypefaceCollection.cs
- RuleInfoComparer.cs
- basecomparevalidator.cs
- PolygonHotSpot.cs
- AuthenticationServiceManager.cs
- HebrewNumber.cs
- ClassGenerator.cs
- ProviderConnectionPointCollection.cs
- GPPOINTF.cs
- Privilege.cs
- SafeCloseHandleCritical.cs
- xsdvalidator.cs
- ExpressionDumper.cs
- FaultHandlingFilter.cs
- diagnosticsswitches.cs
- WebRequest.cs
- ListBindingHelper.cs
- XmlSchemaElement.cs
- SingleObjectCollection.cs
- TimelineGroup.cs
- OwnerDrawPropertyBag.cs
- ColumnBinding.cs