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
- FixedSchema.cs
- MailAddressCollection.cs
- XmlElementAttribute.cs
- DebugHandleTracker.cs
- Formatter.cs
- BinaryCommonClasses.cs
- WebPartPersonalization.cs
- _ProxyRegBlob.cs
- ListControl.cs
- TreeViewDataItemAutomationPeer.cs
- DefaultSection.cs
- Row.cs
- TextPenaltyModule.cs
- LabelDesigner.cs
- TypedTableBase.cs
- NullableIntAverageAggregationOperator.cs
- MenuScrollingVisibilityConverter.cs
- PageFunction.cs
- RolePrincipal.cs
- ProviderManager.cs
- Calendar.cs
- DataRecordInfo.cs
- ListViewGroupConverter.cs
- prompt.cs
- VideoDrawing.cs
- XmlElementAttributes.cs
- ShutDownListener.cs
- SHA1CryptoServiceProvider.cs
- ManagedWndProcTracker.cs
- ListViewInsertedEventArgs.cs
- ButtonFieldBase.cs
- PerformanceCounterPermissionEntryCollection.cs
- WebSysDescriptionAttribute.cs
- ComplexTypeEmitter.cs
- ApplicationServiceManager.cs
- DbConnectionPoolCounters.cs
- ProxyAttribute.cs
- TreeNodeConverter.cs
- StringStorage.cs
- TaskFormBase.cs
- ClientSponsor.cs
- NegotiateStream.cs
- ColumnMapVisitor.cs
- List.cs
- XsltException.cs
- ValidationResult.cs
- RtfControls.cs
- ListViewItem.cs
- Button.cs
- ListSortDescriptionCollection.cs
- X500Name.cs
- BitmapEffectGeneralTransform.cs
- MouseActionConverter.cs
- DefaultValueTypeConverter.cs
- SEHException.cs
- pingexception.cs
- RoutedEventArgs.cs
- WindowCollection.cs
- AppearanceEditorPart.cs
- ControllableStoryboardAction.cs
- filewebrequest.cs
- SafeLibraryHandle.cs
- CanonicalFontFamilyReference.cs
- BindingValueChangedEventArgs.cs
- TextSchema.cs
- OdbcDataAdapter.cs
- RelationshipConstraintValidator.cs
- EFTableProvider.cs
- IPCCacheManager.cs
- XmlnsCache.cs
- SrgsToken.cs
- CodeStatementCollection.cs
- ProtocolViolationException.cs
- MyContact.cs
- ConsoleCancelEventArgs.cs
- CryptoHandle.cs
- ViewStateException.cs
- BaseAddressElement.cs
- ToolboxDataAttribute.cs
- DefaultPropertiesToSend.cs
- OleDbConnection.cs
- CustomAttributeFormatException.cs
- HelpKeywordAttribute.cs
- Figure.cs
- DataGridColumnCollection.cs
- LinqDataSourceSelectEventArgs.cs
- CodeTypeOfExpression.cs
- SequenceDesigner.cs
- OletxEnlistment.cs
- WSSecurityOneDotOneSendSecurityHeader.cs
- FtpWebResponse.cs
- input.cs
- XmlSchemaComplexContentRestriction.cs
- PersonalizablePropertyEntry.cs
- ServiceNotStartedException.cs
- Rect3D.cs
- HttpModuleAction.cs
- EntityContainer.cs
- BamlResourceDeserializer.cs
- WinFormsUtils.cs