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
- OdbcConnectionOpen.cs
- UserControlParser.cs
- IODescriptionAttribute.cs
- CleanUpVirtualizedItemEventArgs.cs
- SecurityTokenAttachmentMode.cs
- OleDbPropertySetGuid.cs
- ElementAction.cs
- TextRangeSerialization.cs
- WebPartUtil.cs
- FlatButtonAppearance.cs
- ValidationSummaryDesigner.cs
- COM2Enum.cs
- BitmapPalette.cs
- DelimitedListTraceListener.cs
- ArgIterator.cs
- RenameRuleObjectDialog.cs
- COM2IPerPropertyBrowsingHandler.cs
- WebCategoryAttribute.cs
- EmptyEnumerator.cs
- SiteOfOriginContainer.cs
- EdgeProfileValidation.cs
- ListViewEditEventArgs.cs
- FreeFormPanel.cs
- SqlGenericUtil.cs
- ContextMenuStrip.cs
- ImageDrawing.cs
- RequestCacheValidator.cs
- XmlSchemaInclude.cs
- Sentence.cs
- Transform.cs
- StringExpressionSet.cs
- Operator.cs
- DbConnectionStringCommon.cs
- Oci.cs
- Publisher.cs
- SqlSelectClauseBuilder.cs
- DataGridViewColumnConverter.cs
- RelatedCurrencyManager.cs
- SubclassTypeValidatorAttribute.cs
- SynchronizationContext.cs
- SynchronousChannel.cs
- ScriptingSectionGroup.cs
- XmlObjectSerializerReadContextComplex.cs
- WebContext.cs
- ResumeStoryboard.cs
- RightsManagementSuppressedStream.cs
- NodeLabelEditEvent.cs
- TextBoxLine.cs
- SymbolMethod.cs
- SynchronizedMessageSource.cs
- ActivityLocationReferenceEnvironment.cs
- SemaphoreSlim.cs
- TrustVersion.cs
- TcpHostedTransportConfiguration.cs
- EntityDataSourceMemberPath.cs
- ResourceReferenceExpressionConverter.cs
- KeyNotFoundException.cs
- SspiNegotiationTokenAuthenticatorState.cs
- ValueTypeFixupInfo.cs
- TraceLog.cs
- AmbiguousMatchException.cs
- PersonalizationProviderHelper.cs
- FixedLineResult.cs
- Matrix.cs
- SByte.cs
- PropertyValueChangedEvent.cs
- QuerySetOp.cs
- PeerEndPoint.cs
- BatchStream.cs
- ObjectKeyFrameCollection.cs
- AddInController.cs
- GridViewSortEventArgs.cs
- ToolZone.cs
- XmlHelper.cs
- WebHttpSecurityModeHelper.cs
- baseaxisquery.cs
- Baml6ConstructorInfo.cs
- NativeMethods.cs
- WebServiceTypeData.cs
- MonthCalendar.cs
- ProjectedSlot.cs
- DefaultMemberAttribute.cs
- TraceFilter.cs
- CustomError.cs
- ADConnectionHelper.cs
- WebPartTransformer.cs
- MobileTextWriter.cs
- ToolBarPanel.cs
- FixedSOMTable.cs
- InputBinding.cs
- ProcessHost.cs
- DesignerTransactionCloseEvent.cs
- SerializationSectionGroup.cs
- ExpressionLexer.cs
- LayoutInformation.cs
- XmlWrappingWriter.cs
- PriorityChain.cs
- RootBrowserWindowAutomationPeer.cs
- NullableBoolConverter.cs
- SystemDiagnosticsSection.cs