Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / System.ServiceModel.Activation / System / ServiceModel / Activation / HostedNamedPipeTransportManager.cs / 1305376 / 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; ActiononViaCallback; SharedConnectionListener listener; ConnectionDemuxer connectionDemuxer; int queueId; Guid token; Func onDuplicatedViaCallback; bool demuxerCreated; public HostedNamedPipeTransportManager(BaseUriWithWildcard baseAddress) : base(baseAddress.BaseAddress) { this.HostNameComparisonMode = baseAddress.HostNameComparisonMode; this.onViaCallback = new Action (OnVia); this.onDuplicatedViaCallback = new Func (OnDuplicatedVia); } protected override bool IsCompatible(NamedPipeChannelListener channelListener) { if (channelListener.HostedVirtualPath == null) { return false; } return base.IsCompatible(channelListener); } internal void Start(int queueId, Guid token, Action messageReceivedCallback) { SetMessageReceivedCallback(messageReceivedCallback); OnOpenInternal(queueId, token); } internal override void OnOpen() { // This is intentionally empty. } internal override void OnAbort() { } internal void Stop(TimeSpan timeout) { Cleanup(false, timeout); } void Cleanup(bool aborting, TimeSpan timeout) { lock (ThisLock) { if (listener != null) { if (!aborting) { listener.Stop(timeout); } else { listener.Abort(); } // 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(TimeSpan timeout) { } 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. int OnDuplicatedVia(Uri via) { OnVia(via); if (!demuxerCreated) { lock (ThisLock) { if (listener == null) { // The listener has been stopped. throw FxTrace.Exception.AsError(new CommunicationObjectAbortedException(SR.PipeListenerProxyStopped)); } if (!demuxerCreated) { CreateConnectionDemuxer(); demuxerCreated = true; } } } return this.ConnectionBufferSize; } } } // 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
- storepermission.cs
- DbConnectionPoolGroup.cs
- DataGridViewRow.cs
- SqlInfoMessageEvent.cs
- SecureUICommand.cs
- CatalogPartCollection.cs
- AddInSegmentDirectoryNotFoundException.cs
- ByteAnimation.cs
- TableStyle.cs
- SecurityHelper.cs
- InteropEnvironment.cs
- AutomationPeer.cs
- DataGridTableStyleMappingNameEditor.cs
- PlatformCulture.cs
- StorageEntityContainerMapping.cs
- Literal.cs
- DSACryptoServiceProvider.cs
- TPLETWProvider.cs
- CodeDirectiveCollection.cs
- ResourceContainer.cs
- BackgroundFormatInfo.cs
- MultipleViewPatternIdentifiers.cs
- XsdBuilder.cs
- TreeNode.cs
- _SingleItemRequestCache.cs
- GridViewSortEventArgs.cs
- linebase.cs
- MimeTypePropertyAttribute.cs
- ErrorTableItemStyle.cs
- GotoExpression.cs
- KeyboardEventArgs.cs
- MetroSerializationManager.cs
- SnapshotChangeTrackingStrategy.cs
- NamedPipeProcessProtocolHandler.cs
- WorkflowApplicationException.cs
- LowerCaseStringConverter.cs
- Maps.cs
- ISAPIWorkerRequest.cs
- ValidatedControlConverter.cs
- CompilerWrapper.cs
- AutoResizedEvent.cs
- DataGridViewRowContextMenuStripNeededEventArgs.cs
- TraceUtility.cs
- ConfigXmlElement.cs
- FrameSecurityDescriptor.cs
- ImageCodecInfoPrivate.cs
- Variant.cs
- WindowsFormsSectionHandler.cs
- DesignerDataTable.cs
- ComponentDesigner.cs
- ProxyElement.cs
- SQLBinary.cs
- MarkupCompilePass2.cs
- WebPartEditVerb.cs
- GeneratedCodeAttribute.cs
- ProfileModule.cs
- SimpleBitVector32.cs
- GridViewDeletedEventArgs.cs
- SoapExtension.cs
- DbConnectionOptions.cs
- RowUpdatedEventArgs.cs
- SystemResourceHost.cs
- GlyphElement.cs
- StrongBox.cs
- LocalizationCodeDomSerializer.cs
- RecordBuilder.cs
- DataGridViewBand.cs
- DPTypeDescriptorContext.cs
- XPathNode.cs
- AssemblyFilter.cs
- TcpServerChannel.cs
- DbDataReader.cs
- MailMessage.cs
- FreeFormDragDropManager.cs
- JsonQueryStringConverter.cs
- Path.cs
- SingleResultAttribute.cs
- StylusCaptureWithinProperty.cs
- MenuBase.cs
- SharedPerformanceCounter.cs
- SectionUpdates.cs
- Brush.cs
- XPathParser.cs
- SqlParameter.cs
- TextServicesContext.cs
- QueryRewriter.cs
- AsyncResult.cs
- DmlSqlGenerator.cs
- KeyInterop.cs
- CompilerState.cs
- ShaderEffect.cs
- Token.cs
- MailDefinition.cs
- ImageField.cs
- BindingRestrictions.cs
- SizeConverter.cs
- QueryCursorEventArgs.cs
- GridViewAutoFormat.cs
- HttpModulesSection.cs
- MessagePartProtectionMode.cs