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
- DataBindingHandlerAttribute.cs
- SmiEventSink_Default.cs
- OleDbErrorCollection.cs
- EventLogPermissionEntry.cs
- PerformanceCounterLib.cs
- DBNull.cs
- RegexCompilationInfo.cs
- EdmEntityTypeAttribute.cs
- BooleanToSelectiveScrollingOrientationConverter.cs
- DataKey.cs
- RtfControls.cs
- PersonalizationStateQuery.cs
- UseManagedPresentationBindingElement.cs
- XmlNodeList.cs
- ImageIndexConverter.cs
- XmlBinaryReader.cs
- OleDbRowUpdatingEvent.cs
- SchemaTypeEmitter.cs
- XPathNodeInfoAtom.cs
- LostFocusEventManager.cs
- XmlHelper.cs
- SoapMessage.cs
- ClientSession.cs
- DefaultSection.cs
- FilterableAttribute.cs
- PingReply.cs
- HorizontalAlignConverter.cs
- DataControlImageButton.cs
- PublishLicense.cs
- GACIdentityPermission.cs
- InputLanguageCollection.cs
- EdmComplexPropertyAttribute.cs
- EventProviderBase.cs
- SslStream.cs
- ListViewEditEventArgs.cs
- BamlBinaryWriter.cs
- BrowserCapabilitiesCompiler.cs
- RelationshipConverter.cs
- NameValueSectionHandler.cs
- FieldNameLookup.cs
- EntityClientCacheEntry.cs
- EntityStoreSchemaFilterEntry.cs
- oledbmetadatacollectionnames.cs
- LoginUtil.cs
- NamedPermissionSet.cs
- Tracer.cs
- IdnElement.cs
- TCPListener.cs
- InstanceLockedException.cs
- DataBindingList.cs
- SessionStateModule.cs
- PeerObject.cs
- KeySpline.cs
- WindowAutomationPeer.cs
- AutoGeneratedFieldProperties.cs
- VScrollBar.cs
- Normalization.cs
- CodeTypeConstructor.cs
- IISUnsafeMethods.cs
- _ProxyChain.cs
- DataSourceControl.cs
- Sql8ExpressionRewriter.cs
- PathSegment.cs
- PageWrapper.cs
- _BaseOverlappedAsyncResult.cs
- CFStream.cs
- HttpRequestCacheValidator.cs
- SoapMessage.cs
- _NestedMultipleAsyncResult.cs
- Signature.cs
- SqlDeflator.cs
- TextTreeTextElementNode.cs
- ToolConsole.cs
- PermissionListSet.cs
- Event.cs
- Context.cs
- ManipulationInertiaStartingEventArgs.cs
- WebPartRestoreVerb.cs
- WindowsIdentity.cs
- FixedPageStructure.cs
- DbModificationClause.cs
- TlsnegoTokenProvider.cs
- DBParameter.cs
- EntitySqlQueryState.cs
- DotNetATv1WindowsLogEntrySerializer.cs
- TextSpanModifier.cs
- DataControlCommands.cs
- ReferencedAssemblyResolver.cs
- MulticastNotSupportedException.cs
- ListViewPagedDataSource.cs
- CopyAttributesAction.cs
- ToggleButton.cs
- BindingNavigator.cs
- FontStyle.cs
- AliasedExpr.cs
- SqlProcedureAttribute.cs
- TransactionManager.cs
- AdornerLayer.cs
- CommonProperties.cs
- _PooledStream.cs