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
- KnowledgeBase.cs
- HostedElements.cs
- _TransmitFileOverlappedAsyncResult.cs
- DocumentPageView.cs
- Rectangle.cs
- FileSystemWatcher.cs
- BitmapData.cs
- ExternalException.cs
- compensatingcollection.cs
- XPathNodeList.cs
- MissingManifestResourceException.cs
- EntityObject.cs
- CollectionViewGroupInternal.cs
- SiteMapNodeItemEventArgs.cs
- CurrentTimeZone.cs
- StreamReader.cs
- dataprotectionpermission.cs
- ValidatorAttribute.cs
- FlowLayoutSettings.cs
- SystemIcons.cs
- MaxMessageSizeStream.cs
- SizeChangedInfo.cs
- CommandTreeTypeHelper.cs
- OdbcConnectionHandle.cs
- TreeChangeInfo.cs
- DoubleLinkList.cs
- AdPostCacheSubstitution.cs
- ChannelServices.cs
- SectionInput.cs
- EntitySetDataBindingList.cs
- XamlSerializerUtil.cs
- DataControlReferenceCollection.cs
- WindowsAuthenticationEventArgs.cs
- DataSourceXmlAttributeAttribute.cs
- Encoder.cs
- HttpValueCollection.cs
- DiscreteKeyFrames.cs
- TextTabProperties.cs
- ListItemCollection.cs
- OperationPickerDialog.designer.cs
- PriorityQueue.cs
- SerializationInfo.cs
- Size3D.cs
- NameValueCollection.cs
- ChannelListenerBase.cs
- WebPartCloseVerb.cs
- MetabaseReader.cs
- XmlSecureResolver.cs
- MexServiceChannelBuilder.cs
- HandleDictionary.cs
- Parameter.cs
- SiteOfOriginContainer.cs
- QuaternionAnimation.cs
- ItemList.cs
- Context.cs
- FontInfo.cs
- Bold.cs
- InternalConfigEventArgs.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- FunctionImportElement.cs
- FunctionDetailsReader.cs
- XmlEnumAttribute.cs
- BufferModeSettings.cs
- ConvertersCollection.cs
- SystemPens.cs
- thaishape.cs
- RectIndependentAnimationStorage.cs
- MemberRelationshipService.cs
- WpfXamlType.cs
- BitSet.cs
- BufferedOutputAsyncStream.cs
- BitmapMetadataBlob.cs
- FixedHighlight.cs
- DataPagerFieldItem.cs
- QilNode.cs
- ConnectionStringSettings.cs
- RemotingSurrogateSelector.cs
- MailDefinition.cs
- PermissionRequestEvidence.cs
- BulletChrome.cs
- StorageRoot.cs
- ChameleonKey.cs
- XamlToRtfWriter.cs
- CodeSnippetExpression.cs
- ProcessProtocolHandler.cs
- PersonalizationDictionary.cs
- CounterCreationData.cs
- __TransparentProxy.cs
- DecimalAnimationUsingKeyFrames.cs
- RenderOptions.cs
- WebPartDisplayModeCollection.cs
- Frame.cs
- CodeGenerator.cs
- FormView.cs
- TextTreeTextElementNode.cs
- SoapEnumAttribute.cs
- HtmlContainerControl.cs
- MetadataArtifactLoaderResource.cs
- UriTemplateTableMatchCandidate.cs
- AnnotationService.cs