Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / RunTime / DebugEngine / IInstanceTable.cs / 1305376 / IInstanceTable.cs
// Copyright (c) Microsoft Corp., 2004. All rights reserved. #region Using directives using System; using System.Workflow.Runtime; using System.Collections.Generic; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Design; #endregion namespace System.Workflow.Runtime.DebugEngine { // // IMPORTANT: Do not edit this file without consulting Break Safe Synchronization.doc! // #region interface IInstanceTable public interface IInstanceTable { Activity GetActivity(string instanceId, string activityName); } #endregion #region Class InstanceData internal sealed class InstanceData: ICloneable { Activity rootActivity; public Activity RootActivity { get { return this.rootActivity; } set { this.rootActivity = value; } } public InstanceData(Activity rootActivity) { this.rootActivity = rootActivity; } object ICloneable.Clone() { InstanceData instanceData = new InstanceData(this.rootActivity); return instanceData; } } internal sealed class InstanceMap : Dictionary, ICloneable { object ICloneable.Clone() { InstanceMap data = new InstanceMap(); foreach (Guid instsanceId in Keys) data.Add(instsanceId, (InstanceData) (((ICloneable)(this[instsanceId])).Clone())); return data; } } #endregion #region Class InstanceTable internal sealed class InstanceTable : BreakSafeBase , IInstanceTable { public InstanceTable(int controllerManagedThreadId): base(controllerManagedThreadId) { } // Controller invoked. public void AddInstance(Guid instanceId, Activity rootActivity) { try { Lock(); InstanceMap instanceMap = GetWriterData(); instanceMap[instanceId] = new InstanceData(rootActivity); SaveData(instanceMap); } finally { Unlock(); } } // Controller invoked. public void RemoveInstance(Guid instanceId) { try { Lock(); InstanceMap instanceMap = GetWriterData(); instanceMap.Remove(instanceId); SaveData(instanceMap); } finally { Unlock(); } } // Controller invoked during Dynamic Update notification subscription changes. public Activity GetRootActivity(Guid instanceId) { try { Lock(); return GetReaderData()[instanceId].RootActivity; } finally { Unlock(); } } // Controller invoked during Dynamic Update notification subscription changes. public void UpdateRootActivity(Guid instanceId, Activity rootActivity) { try { Lock(); InstanceMap instanceMap = GetWriterData(); instanceMap[instanceId].RootActivity = rootActivity; SaveData(instanceMap); } finally { Unlock(); } } // DE invoked for watches through expression evaluation. Activity IInstanceTable.GetActivity(string instanceId, string activityQualifiedName) { try { Lock(); Activity rootActivity = GetReaderData()[new Guid(instanceId)].RootActivity; return DebuggerHelpers.ParseActivity(rootActivity, activityQualifiedName); } finally { Unlock(); } } } #endregion } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. // Copyright (c) Microsoft Corp., 2004. All rights reserved. #region Using directives using System; using System.Workflow.Runtime; using System.Collections.Generic; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Design; #endregion namespace System.Workflow.Runtime.DebugEngine { // // IMPORTANT: Do not edit this file without consulting Break Safe Synchronization.doc! // #region interface IInstanceTable public interface IInstanceTable { Activity GetActivity(string instanceId, string activityName); } #endregion #region Class InstanceData internal sealed class InstanceData: ICloneable { Activity rootActivity; public Activity RootActivity { get { return this.rootActivity; } set { this.rootActivity = value; } } public InstanceData(Activity rootActivity) { this.rootActivity = rootActivity; } object ICloneable.Clone() { InstanceData instanceData = new InstanceData(this.rootActivity); return instanceData; } } internal sealed class InstanceMap : Dictionary , ICloneable { object ICloneable.Clone() { InstanceMap data = new InstanceMap(); foreach (Guid instsanceId in Keys) data.Add(instsanceId, (InstanceData) (((ICloneable)(this[instsanceId])).Clone())); return data; } } #endregion #region Class InstanceTable internal sealed class InstanceTable : BreakSafeBase , IInstanceTable { public InstanceTable(int controllerManagedThreadId): base(controllerManagedThreadId) { } // Controller invoked. public void AddInstance(Guid instanceId, Activity rootActivity) { try { Lock(); InstanceMap instanceMap = GetWriterData(); instanceMap[instanceId] = new InstanceData(rootActivity); SaveData(instanceMap); } finally { Unlock(); } } // Controller invoked. public void RemoveInstance(Guid instanceId) { try { Lock(); InstanceMap instanceMap = GetWriterData(); instanceMap.Remove(instanceId); SaveData(instanceMap); } finally { Unlock(); } } // Controller invoked during Dynamic Update notification subscription changes. public Activity GetRootActivity(Guid instanceId) { try { Lock(); return GetReaderData()[instanceId].RootActivity; } finally { Unlock(); } } // Controller invoked during Dynamic Update notification subscription changes. public void UpdateRootActivity(Guid instanceId, Activity rootActivity) { try { Lock(); InstanceMap instanceMap = GetWriterData(); instanceMap[instanceId].RootActivity = rootActivity; SaveData(instanceMap); } finally { Unlock(); } } // DE invoked for watches through expression evaluation. Activity IInstanceTable.GetActivity(string instanceId, string activityQualifiedName) { try { Lock(); Activity rootActivity = GetReaderData()[new Guid(instanceId)].RootActivity; return DebuggerHelpers.ParseActivity(rootActivity, activityQualifiedName); } finally { Unlock(); } } } #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
- QueryContinueDragEventArgs.cs
- DropSource.cs
- RuleSetCollection.cs
- EnumValidator.cs
- Assembly.cs
- SystemIPInterfaceStatistics.cs
- Context.cs
- ScrollEvent.cs
- XmlMembersMapping.cs
- CodeNamespaceCollection.cs
- EntitySetDataBindingList.cs
- BamlBinaryReader.cs
- WebFormsRootDesigner.cs
- ConfigXmlElement.cs
- AlternateViewCollection.cs
- ExeContext.cs
- EncryptedPackage.cs
- SecurityKeyUsage.cs
- Scene3D.cs
- LoginUtil.cs
- ResXResourceReader.cs
- AnimationClockResource.cs
- UnsafeNativeMethods.cs
- AssociationSetEnd.cs
- MappingModelBuildProvider.cs
- IEnumerable.cs
- GridViewRowEventArgs.cs
- FileDialog_Vista_Interop.cs
- WriterOutput.cs
- ProfileSettings.cs
- PageHandlerFactory.cs
- ListViewUpdatedEventArgs.cs
- AppSettingsReader.cs
- WorkflowRuntimeBehavior.cs
- UnmanagedMarshal.cs
- RequestNavigateEventArgs.cs
- PowerModeChangedEventArgs.cs
- LazyTextWriterCreator.cs
- PropertyInfoSet.cs
- MasterPage.cs
- ViewStateException.cs
- SimpleHandlerFactory.cs
- XMLUtil.cs
- DataBindingList.cs
- _SingleItemRequestCache.cs
- SerializationObjectManager.cs
- KnownIds.cs
- StrongName.cs
- ReplacementText.cs
- HtmlTextArea.cs
- ComplexObject.cs
- DataGridCaption.cs
- StylusTip.cs
- UIAgentAsyncEndRequest.cs
- NavigateUrlConverter.cs
- CachedCompositeFamily.cs
- WCFServiceClientProxyGenerator.cs
- ContextQuery.cs
- HtmlTable.cs
- FilteredDataSetHelper.cs
- BindingList.cs
- DependencyObjectProvider.cs
- XmlSchemaSequence.cs
- EdmRelationshipRoleAttribute.cs
- LongAverageAggregationOperator.cs
- login.cs
- StrokeDescriptor.cs
- UdpDiscoveryEndpointProvider.cs
- StreamedFramingRequestChannel.cs
- NameHandler.cs
- RoutedEventValueSerializer.cs
- ServiceModelActivationSectionGroup.cs
- CellIdBoolean.cs
- BindingManagerDataErrorEventArgs.cs
- EdmError.cs
- Latin1Encoding.cs
- ElementMarkupObject.cs
- CodeTypeReferenceCollection.cs
- CachedPathData.cs
- ValueType.cs
- ToolBar.cs
- Types.cs
- BamlCollectionHolder.cs
- PropertyTabAttribute.cs
- RSAPKCS1KeyExchangeFormatter.cs
- Path.cs
- CompositeCollectionView.cs
- ManualResetEvent.cs
- TextBoxView.cs
- X509CertificateClaimSet.cs
- CreateUserWizardStep.cs
- DbDataAdapter.cs
- SplayTreeNode.cs
- CompModSwitches.cs
- IndexerNameAttribute.cs
- DrawingDrawingContext.cs
- ClientOptions.cs
- CodeMethodReturnStatement.cs
- MultiPropertyDescriptorGridEntry.cs
- RegexGroupCollection.cs