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
- Selector.cs
- XmlMapping.cs
- ParameterBuilder.cs
- DateTimeOffsetAdapter.cs
- StringFunctions.cs
- EdmToObjectNamespaceMap.cs
- LayoutUtils.cs
- DataBindEngine.cs
- TaskDesigner.cs
- DataGridViewBindingCompleteEventArgs.cs
- Ipv6Element.cs
- DiscreteKeyFrames.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- FirewallWrapper.cs
- TextParentUndoUnit.cs
- DbReferenceCollection.cs
- FillRuleValidation.cs
- DisplayNameAttribute.cs
- MetadataAssemblyHelper.cs
- XmlnsCompatibleWithAttribute.cs
- CreateUserErrorEventArgs.cs
- InvokeProviderWrapper.cs
- XPathSelfQuery.cs
- DesignSurfaceCollection.cs
- TextServicesCompartment.cs
- MultipartIdentifier.cs
- RouteParametersHelper.cs
- ParseHttpDate.cs
- ObjectConverter.cs
- BindingContext.cs
- TextBoxAutoCompleteSourceConverter.cs
- XmlNamedNodeMap.cs
- HttpServerProtocol.cs
- ProviderCollection.cs
- DmlSqlGenerator.cs
- OdbcStatementHandle.cs
- SqlMethodCallConverter.cs
- EventLogStatus.cs
- AutomationPattern.cs
- CodeTypeConstructor.cs
- JsonEncodingStreamWrapper.cs
- XmlWellformedWriter.cs
- HtmlImage.cs
- PublisherMembershipCondition.cs
- ExtensionElementCollection.cs
- DecimalAverageAggregationOperator.cs
- ArgumentException.cs
- Ops.cs
- QilPatternVisitor.cs
- RangeEnumerable.cs
- HwndAppCommandInputProvider.cs
- CategoryNameCollection.cs
- CheckBoxFlatAdapter.cs
- InfoCardRSAPKCS1KeyExchangeFormatter.cs
- AnchoredBlock.cs
- _TransmitFileOverlappedAsyncResult.cs
- WebPartConnectionsEventArgs.cs
- HtmlImage.cs
- ProxyWebPartConnectionCollection.cs
- ObjectDataSourceDisposingEventArgs.cs
- SQLDecimal.cs
- SqlProviderServices.cs
- NetStream.cs
- CodeRegionDirective.cs
- HiddenField.cs
- Assembly.cs
- StreamMarshaler.cs
- SignatureToken.cs
- ReflectionPermission.cs
- ResourcePool.cs
- UIntPtr.cs
- ChangeToolStripParentVerb.cs
- Inline.cs
- EtwTrace.cs
- DiscoveryExceptionDictionary.cs
- WebRequest.cs
- PathSegmentCollection.cs
- StickyNote.cs
- AsymmetricSignatureFormatter.cs
- QueryStatement.cs
- FileUtil.cs
- SafeReadContext.cs
- QueueException.cs
- DbUpdateCommandTree.cs
- TextSegment.cs
- XmlElementList.cs
- ConstantCheck.cs
- SafeBitVector32.cs
- EndpointConfigContainer.cs
- Menu.cs
- SqlClientWrapperSmiStreamChars.cs
- PropertyInformation.cs
- WorkflowInstanceExtensionCollection.cs
- HttpListenerResponse.cs
- SimpleApplicationHost.cs
- ResourcePool.cs
- InvokeBinder.cs
- RemotingServices.cs
- CodeNamespaceCollection.cs
- GrowingArray.cs