Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Channels / CommunicationObjectManager.cs / 1 / CommunicationObjectManager.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Channels { using System.Diagnostics; using System.ServiceModel; using System.Collections.Generic; using System.Collections; internal class CommunicationObjectManager: LifetimeManager where ItemType : class, ICommunicationObject { bool inputClosed; Hashtable table; public CommunicationObjectManager(object mutex) : base(mutex) { this.table = new Hashtable(); } public void Add(ItemType item) { bool added = false; lock (this.ThisLock) { if (this.State == LifetimeState.Opened && !this.inputClosed) { if (this.table.ContainsKey(item)) return; this.table.Add(item, item); base.IncrementBusyCountWithoutLock(); item.Closed += this.OnItemClosed; added = true; } } if (!added) { item.Abort(); throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ObjectDisposedException(this.GetType().ToString())); } } public void CloseInput() { //Abort can reenter this call as a result of //close timeout, Closing input twice is not a //FailFast case. this.inputClosed = true; } public void DecrementActivityCount() { this.DecrementBusyCount(); } public void IncrementActivityCount() { this.IncrementBusyCount(); } void OnItemClosed(object sender, EventArgs args) { this.Remove((ItemType)sender); } public void Remove(ItemType item) { lock (this.ThisLock) { if (!this.table.ContainsKey(item)) return; this.table.Remove(item); } item.Closed -= this.OnItemClosed; base.DecrementBusyCount(); } public ItemType[] ToArray() { lock (this.ThisLock) { int index = 0; ItemType[] items = new ItemType[this.table.Keys.Count]; foreach(ItemType item in this.table.Keys) items[index++] = item; return items; } } } } // 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
- SqlUnionizer.cs
- XPathDocumentNavigator.cs
- StronglyTypedResourceBuilder.cs
- ColorMatrix.cs
- MobileControlBuilder.cs
- SimpleType.cs
- ImageAttributes.cs
- InstanceCompleteException.cs
- CodeParameterDeclarationExpressionCollection.cs
- StateWorkerRequest.cs
- UiaCoreProviderApi.cs
- CornerRadius.cs
- embossbitmapeffect.cs
- ToolZone.cs
- BinaryCommonClasses.cs
- HttpResponseHeader.cs
- CodeTypeReferenceCollection.cs
- MenuTracker.cs
- Error.cs
- CheckBoxStandardAdapter.cs
- SafeNativeMethods.cs
- CollectionView.cs
- ScriptComponentDescriptor.cs
- SerializationFieldInfo.cs
- EntityKey.cs
- PerspectiveCamera.cs
- ReadOnlyNameValueCollection.cs
- SqlLiftIndependentRowExpressions.cs
- LineGeometry.cs
- ItemsChangedEventArgs.cs
- XmlSubtreeReader.cs
- HttpProfileGroupBase.cs
- TextFormatterImp.cs
- designeractionlistschangedeventargs.cs
- PerformanceCountersElement.cs
- StringUtil.cs
- PackageFilter.cs
- NumberFormatter.cs
- HtmlGenericControl.cs
- InternalSafeNativeMethods.cs
- InstanceView.cs
- ProxyElement.cs
- ObjectItemCollection.cs
- AppSettingsSection.cs
- OdbcDataAdapter.cs
- RoutedCommand.cs
- ScrollProviderWrapper.cs
- SerializationIncompleteException.cs
- CodeSpit.cs
- HttpConfigurationContext.cs
- BitmapEffectvisualstate.cs
- XmlDataProvider.cs
- WindowHideOrCloseTracker.cs
- DetailsViewRowCollection.cs
- TransmissionStrategy.cs
- WebSysDisplayNameAttribute.cs
- AnimationException.cs
- CultureInfo.cs
- AdornerLayer.cs
- AutomationAttributeInfo.cs
- TranslateTransform3D.cs
- TiffBitmapDecoder.cs
- FusionWrap.cs
- MemberMaps.cs
- TogglePattern.cs
- PermissionRequestEvidence.cs
- ArcSegment.cs
- Utils.cs
- XmlnsDictionary.cs
- FileSystemInfo.cs
- CachedFontFace.cs
- ToolZone.cs
- ObfuscateAssemblyAttribute.cs
- ParameterBinding.cs
- TextEditorCopyPaste.cs
- messageonlyhwndwrapper.cs
- TimeoutException.cs
- BigInt.cs
- XPathDocumentNavigator.cs
- WebBrowserDocumentCompletedEventHandler.cs
- ParserHooks.cs
- RichTextBoxDesigner.cs
- ToolStripPanelRow.cs
- DataBoundLiteralControl.cs
- Pen.cs
- CommonObjectSecurity.cs
- DynamicValueConverter.cs
- HoistedLocals.cs
- SiteIdentityPermission.cs
- GZipStream.cs
- ReadOnlyCollectionBase.cs
- XmlDocument.cs
- ParameterCollectionEditor.cs
- SqlMultiplexer.cs
- QilInvokeEarlyBound.cs
- WindowPatternIdentifiers.cs
- XmlSerializationGeneratedCode.cs
- Rights.cs
- versioninfo.cs
- SecurityBindingElementImporter.cs