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
- BasicBrowserDialog.designer.cs
- SmiEventSink.cs
- MetadataArtifactLoaderFile.cs
- Parallel.cs
- configsystem.cs
- BitmapEffect.cs
- InitializationEventAttribute.cs
- LocalBuilder.cs
- Parameter.cs
- KeyTime.cs
- exports.cs
- TypedLocationWrapper.cs
- WebPartsSection.cs
- SqlWriter.cs
- PropertyOverridesDialog.cs
- TransactionContextValidator.cs
- HtmlInputCheckBox.cs
- PartialTrustHelpers.cs
- SmtpReplyReader.cs
- ImageConverter.cs
- RoleManagerSection.cs
- AnimationException.cs
- CheckBoxAutomationPeer.cs
- CorruptingExceptionCommon.cs
- ScrollItemProviderWrapper.cs
- ScrollBar.cs
- CalendarDesigner.cs
- XmlSchemaObjectCollection.cs
- NativeMethods.cs
- AttributeInfo.cs
- OledbConnectionStringbuilder.cs
- SqlErrorCollection.cs
- OrderedEnumerableRowCollection.cs
- InternalSendMessage.cs
- CollectionContainer.cs
- Errors.cs
- SiteMapNodeItem.cs
- ConfigurationElementCollection.cs
- COM2ExtendedUITypeEditor.cs
- CodeDirectoryCompiler.cs
- ProfileGroupSettings.cs
- XPathNodeHelper.cs
- shaperfactory.cs
- PropertyEmitter.cs
- CodeGenerator.cs
- AuthorizationContext.cs
- HtmlContainerControl.cs
- WebPartMenu.cs
- FederatedMessageSecurityOverHttp.cs
- HideDisabledControlAdapter.cs
- DesignerCalendarAdapter.cs
- CurrentChangingEventArgs.cs
- EventMappingSettingsCollection.cs
- QuaternionIndependentAnimationStorage.cs
- RuntimeHandles.cs
- ToolboxItemCollection.cs
- TextTrailingCharacterEllipsis.cs
- MasterPage.cs
- EntryWrittenEventArgs.cs
- ModelItemKeyValuePair.cs
- FontCollection.cs
- SecureUICommand.cs
- InsufficientMemoryException.cs
- SafeEventLogWriteHandle.cs
- ActivityDesigner.cs
- UserUseLicenseDictionaryLoader.cs
- ReaderWriterLock.cs
- DesignerOptionService.cs
- SmiXetterAccessMap.cs
- UserPreferenceChangedEventArgs.cs
- OleDbCommand.cs
- UDPClient.cs
- XPathParser.cs
- TextEditorContextMenu.cs
- VoiceSynthesis.cs
- Serializer.cs
- CallSiteHelpers.cs
- RelationshipNavigation.cs
- Subtree.cs
- InputLanguage.cs
- PageOutputQuality.cs
- CustomErrorsSection.cs
- KeyValueConfigurationElement.cs
- ApplicationContext.cs
- PolicyStatement.cs
- RegexWriter.cs
- AsyncPostBackErrorEventArgs.cs
- UserPersonalizationStateInfo.cs
- WindowsAuthenticationModule.cs
- UserControl.cs
- NamespaceQuery.cs
- PolicyChain.cs
- ClientTargetCollection.cs
- OleDbParameterCollection.cs
- FontResourceCache.cs
- WebBrowserDocumentCompletedEventHandler.cs
- ColorDialog.cs
- PointF.cs
- WsdlParser.cs
- RuntimeHelpers.cs