Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Debugger / InstrumentationTracker.cs / 1305376 / InstrumentationTracker.cs
//----------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//---------------------------------------------------------------
namespace System.Activities.Debugger
{
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Linq.Expressions;
using System.IO;
using System.Runtime;
// Keep track of instrumentation information.
// - which subroot has source file but not yet instrumented.
// - which subroots share the same source file
// SubRoot is defined as an activity that has a source file
// (Custom Activity).
class InstrumentationTracker
{
// Root of the workflow to keep track.
Activity root;
// Mapping of subroots to their source files.
Dictionary uninstrumentedSubRoots;
Dictionary UninstrumentedSubRoots
{
get
{
if (this.uninstrumentedSubRoots == null)
{
InitializeUninstrumentedSubRoots();
}
return this.uninstrumentedSubRoots;
}
}
public InstrumentationTracker(Activity root)
{
this.root = root;
}
// Initialize UninstrumentedSubRoots by traversing the workflow.
void InitializeUninstrumentedSubRoots()
{
this.uninstrumentedSubRoots = new Dictionary();
Queue activitiesRemaining = new Queue();
CollectSubRoot(this.root);
activitiesRemaining.Enqueue(this.root);
while (activitiesRemaining.Count > 0)
{
Activity toProcess = activitiesRemaining.Dequeue();
foreach (Activity activity in WorkflowInspectionServices.GetActivities(toProcess))
{
CollectSubRoot(activity);
activitiesRemaining.Enqueue(activity);
}
}
}
// Collect subroot as uninstrumented activity.
void CollectSubRoot(Activity activity)
{
string sourcePath = XamlDebuggerXmlReader.GetFileName(activity) as string;
if (!string.IsNullOrEmpty(sourcePath))
{
this.uninstrumentedSubRoots.Add(activity, sourcePath);
}
}
// Whether this is unistrumented sub root.
public bool IsUninstrumentedSubRoot(Activity subRoot)
{
return this.UninstrumentedSubRoots.ContainsKey(subRoot);
}
// Returns Activities that have the same source as the given subRoot.
// This will return other instantiation of the same custom activity.
// Needed to avoid re-instrumentation of the same file.
public List GetSameSourceSubRoots(Activity subRoot)
{
string sourcePath;
List sameSourceSubRoots = new List();
if (this.UninstrumentedSubRoots.TryGetValue(subRoot, out sourcePath))
{
foreach (KeyValuePair entry in this.UninstrumentedSubRoots)
{
if (entry.Value == sourcePath && entry.Key != subRoot)
{
sameSourceSubRoots.Add(entry.Key);
}
}
}
return sameSourceSubRoots;
}
// Mark this sub root as instrumented.
public void MarkInstrumented(Activity subRoot)
{
this.UninstrumentedSubRoots.Remove(subRoot);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Function.cs
- SynchronizingStream.cs
- AttributeData.cs
- DataGridViewCellCancelEventArgs.cs
- HtmlImage.cs
- ResolveMatchesApril2005.cs
- SchemaNames.cs
- LoginCancelEventArgs.cs
- ZipIOFileItemStream.cs
- TraceRecord.cs
- DirectoryNotFoundException.cs
- StylusCaptureWithinProperty.cs
- WsdlInspector.cs
- ExternalFile.cs
- FunctionImportElement.cs
- ConstructorArgumentAttribute.cs
- SafeFileHandle.cs
- XamlParser.cs
- KeyFrames.cs
- ServiceHttpModule.cs
- TextTreeExtractElementUndoUnit.cs
- SqlBinder.cs
- HitTestDrawingContextWalker.cs
- ConstructorArgumentAttribute.cs
- ClientData.cs
- ClassHandlersStore.cs
- xmlglyphRunInfo.cs
- DefaultValueTypeConverter.cs
- ElementMarkupObject.cs
- HashHelper.cs
- EntityAdapter.cs
- ContentPlaceHolder.cs
- RectangleConverter.cs
- TextProviderWrapper.cs
- WorkflowHostingResponseContext.cs
- XmlSchemaSimpleTypeUnion.cs
- Rotation3D.cs
- LineMetrics.cs
- InternalPermissions.cs
- ColumnWidthChangingEvent.cs
- xmlglyphRunInfo.cs
- Object.cs
- ActivationArguments.cs
- SchemaTypeEmitter.cs
- NamedPermissionSet.cs
- coordinatorscratchpad.cs
- PerspectiveCamera.cs
- DbConnectionClosed.cs
- PreviewPrintController.cs
- ProcessModule.cs
- IPCCacheManager.cs
- TreeNodeCollection.cs
- Lease.cs
- RightsManagementEncryptedStream.cs
- MimeMapping.cs
- FixedDocument.cs
- _BasicClient.cs
- EntityDataSourceUtil.cs
- SqlTransaction.cs
- OutputCacheSettings.cs
- RootBrowserWindowAutomationPeer.cs
- SqlDependencyUtils.cs
- MediaTimeline.cs
- EventBindingService.cs
- WsatRegistrationHeader.cs
- Thread.cs
- ConfigurationSettings.cs
- MinMaxParagraphWidth.cs
- ValidationSummary.cs
- Condition.cs
- RequestUriProcessor.cs
- RawKeyboardInputReport.cs
- WebPartAddingEventArgs.cs
- LogicalCallContext.cs
- WindowsAuthenticationEventArgs.cs
- XmlQueryRuntime.cs
- SingleResultAttribute.cs
- autovalidator.cs
- SQLConvert.cs
- PingOptions.cs
- CqlLexerHelpers.cs
- SqlCommandBuilder.cs
- SecurityHelper.cs
- MetafileHeader.cs
- RoleGroup.cs
- CurrentTimeZone.cs
- SRef.cs
- VisualCollection.cs
- StreamGeometry.cs
- RotateTransform.cs
- MsmqOutputSessionChannel.cs
- ResourceManager.cs
- PackWebRequest.cs
- Camera.cs
- FtpWebRequest.cs
- TypeListConverter.cs
- DesignerVerb.cs
- ToolStripDropDownItem.cs
- CodeSnippetTypeMember.cs
- SQLMoney.cs