Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Dispatcher / SingletonInstanceContextProvider.cs / 1 / SingletonInstanceContextProvider.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Dispatcher { using System; using System.ServiceModel; using System.ServiceModel.Channels; internal class SingletonInstanceContextProvider : InstanceContextProviderBase { InstanceContext singleton; object thisLock; internal SingletonInstanceContextProvider(DispatchRuntime dispatchRuntime) : base(dispatchRuntime) { this.thisLock = new Object(); } internal InstanceContext SingletonInstance { get { if (this.singleton == null) { lock (this.thisLock) { if (this.singleton == null) { InstanceContext instanceContext = this.DispatchRuntime.SingletonInstanceContext; if (instanceContext == null) { instanceContext = new InstanceContext(this.DispatchRuntime.ChannelDispatcher.Host, false); } if (instanceContext.State == CommunicationState.Created) { instanceContext.Open(); } //Set the IsUsercreated flag to false for singleton mode even in cases when users create their own runtime. instanceContext.IsUserCreated = false; //Delay assigning the potentially newly created InstanceContext (till after its opened) to this.Singleton //to ensure that it is opened only once. this.singleton = instanceContext; } } } return this.singleton; } } #region IInstanceContextProvider Members public override InstanceContext GetExistingInstanceContext(Message message, IContextChannel channel) { ServiceChannel serviceChannel = this.GetServiceChannelFromProxy(channel); if (serviceChannel != null && serviceChannel.HasSession) { this.SingletonInstance.BindIncomingChannel(serviceChannel); } return this.SingletonInstance; } public override void InitializeInstanceContext(InstanceContext instanceContext, Message message, IContextChannel channel) { //no-op } public override bool IsIdle(InstanceContext instanceContext) { //By default return false return false; } public override void NotifyIdle(InstanceContextIdleCallback callback, InstanceContext instanceContext) { //no-op } #endregion } } // 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
- IProvider.cs
- EventArgs.cs
- CatalogPart.cs
- GlyphsSerializer.cs
- MatcherBuilder.cs
- ConnectionConsumerAttribute.cs
- ProviderBase.cs
- ContactManager.cs
- KoreanLunisolarCalendar.cs
- CompModSwitches.cs
- InputLangChangeEvent.cs
- PolicyStatement.cs
- HttpResponse.cs
- UITypeEditor.cs
- SapiGrammar.cs
- DataGridViewColumn.cs
- ThemeInfoAttribute.cs
- SplayTreeNode.cs
- XmlWhitespace.cs
- RefExpr.cs
- WindowsSlider.cs
- WorkflowApplication.cs
- _ListenerAsyncResult.cs
- RegistryConfigurationProvider.cs
- FloaterParagraph.cs
- RenderingEventArgs.cs
- DataColumnMapping.cs
- Deflater.cs
- _ConnectOverlappedAsyncResult.cs
- TextTreeExtractElementUndoUnit.cs
- MatrixStack.cs
- ApplicationSecurityInfo.cs
- QueryableDataSourceEditData.cs
- AuthenticateEventArgs.cs
- StyleModeStack.cs
- ProcessModelSection.cs
- GenericEnumerator.cs
- DecimalAnimationUsingKeyFrames.cs
- LazyTextWriterCreator.cs
- Input.cs
- ScaleTransform.cs
- TextTreeExtractElementUndoUnit.cs
- FileDialog.cs
- SafeWaitHandle.cs
- Collection.cs
- BaseUriHelper.cs
- FixUp.cs
- WindowsTitleBar.cs
- InternalConfigEventArgs.cs
- SystemUnicastIPAddressInformation.cs
- DiscoveryClientReferences.cs
- EntityCollectionChangedParams.cs
- PriorityQueue.cs
- ReplyChannelAcceptor.cs
- ClipboardProcessor.cs
- EventSetter.cs
- Hash.cs
- MimeBasePart.cs
- SoapInteropTypes.cs
- ProxyWebPart.cs
- AudioFormatConverter.cs
- FullTextState.cs
- XamlInterfaces.cs
- WindowsFormsHost.cs
- MachineSettingsSection.cs
- FormViewCommandEventArgs.cs
- ApplicationDirectoryMembershipCondition.cs
- ObjectDataSourceSelectingEventArgs.cs
- Blend.cs
- TypeLibConverter.cs
- StatusStrip.cs
- RegistrationContext.cs
- MarkedHighlightComponent.cs
- AsyncContentLoadedEventArgs.cs
- TemplatedWizardStep.cs
- UIEndRequest.cs
- ScrollBarAutomationPeer.cs
- BinaryFormatter.cs
- CombinedGeometry.cs
- TemplatePropertyEntry.cs
- DataGridTextBox.cs
- DoubleCollectionValueSerializer.cs
- COM2ExtendedUITypeEditor.cs
- UnsafeNativeMethods.cs
- KeyValueInternalCollection.cs
- PropertyMetadata.cs
- GlyphInfoList.cs
- ToolStripDropDown.cs
- DocumentOrderQuery.cs
- ParserOptions.cs
- COM2PictureConverter.cs
- CopyCodeAction.cs
- Vector3DCollection.cs
- MsmqNonTransactedPoisonHandler.cs
- DataSourceCache.cs
- MaterializeFromAtom.cs
- ListView.cs
- Matrix.cs
- SafeRegistryHandle.cs
- RootProfilePropertySettingsCollection.cs