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
- Int64AnimationBase.cs
- JsonDeserializer.cs
- SqlGenericUtil.cs
- WebPartConnectionCollection.cs
- InheritanceRules.cs
- ResourceAssociationSetEnd.cs
- WindowsToolbar.cs
- HtmlInputImage.cs
- Iis7Helper.cs
- TableHeaderCell.cs
- CommonDialog.cs
- SqlBooleanMismatchVisitor.cs
- ListViewInsertedEventArgs.cs
- AttributeCollection.cs
- FormattedText.cs
- TableParagraph.cs
- HyperLinkColumn.cs
- UseLicense.cs
- IsolatedStorageFilePermission.cs
- LayoutInformation.cs
- CommandField.cs
- URLAttribute.cs
- ObjectStorage.cs
- FullTextBreakpoint.cs
- PasswordRecovery.cs
- ScrollableControlDesigner.cs
- KeyTime.cs
- JobDuplex.cs
- PropertyTabAttribute.cs
- PrintDocument.cs
- SqlIdentifier.cs
- RightsManagementErrorHandler.cs
- EventWaitHandleSecurity.cs
- StyleConverter.cs
- DeferredRunTextReference.cs
- GridViewRowCollection.cs
- WebHttpDispatchOperationSelector.cs
- COM2ExtendedBrowsingHandler.cs
- RecognizeCompletedEventArgs.cs
- Part.cs
- EntityEntry.cs
- FontStyles.cs
- Vector3DIndependentAnimationStorage.cs
- PresentationAppDomainManager.cs
- PenContexts.cs
- ListViewDeletedEventArgs.cs
- TcpProcessProtocolHandler.cs
- DefaultClaimSet.cs
- TextElementEnumerator.cs
- QilDataSource.cs
- AncillaryOps.cs
- HttpInputStream.cs
- InstanceCreationEditor.cs
- TraceProvider.cs
- _OSSOCK.cs
- MatrixTransform3D.cs
- WebConfigurationFileMap.cs
- CultureInfo.cs
- MessageQueueEnumerator.cs
- StringSorter.cs
- RuleElement.cs
- ErrorInfoXmlDocument.cs
- BamlLocalizableResource.cs
- SecurityPermission.cs
- GridViewUpdatedEventArgs.cs
- DataKeyCollection.cs
- ResourceContainer.cs
- DataProviderNameConverter.cs
- Thread.cs
- PointLightBase.cs
- LineUtil.cs
- CompletionProxy.cs
- MediaPlayerState.cs
- XPathParser.cs
- MemberDomainMap.cs
- filewebrequest.cs
- LinqDataSourceInsertEventArgs.cs
- ExpressionEditor.cs
- TextEndOfLine.cs
- MiniCustomAttributeInfo.cs
- AttributeCollection.cs
- StylusPointDescription.cs
- KoreanLunisolarCalendar.cs
- WindowExtensionMethods.cs
- PictureBox.cs
- DeclarativeCatalogPart.cs
- __Filters.cs
- RangeBase.cs
- SafeNativeMethodsOther.cs
- WebServiceErrorEvent.cs
- Cursor.cs
- Stopwatch.cs
- altserialization.cs
- SQLBytesStorage.cs
- TagMapCollection.cs
- PaintValueEventArgs.cs
- AsymmetricSignatureDeformatter.cs
- SequentialActivityDesigner.cs
- LockingPersistenceProvider.cs
- FrameworkRichTextComposition.cs