internal ActivityTraceModeAnalyzerParameters(ActivityTraceModeAnalyzerParameters param) { if (param != null) { foreach (long key in param.ExpandingTransfers.Keys) { expandingTransfers.Add(key, param.ExpandingTransfers[key]); } foreach (long key2 in param.ExpandingTransferTraceLevels.Keys) { expandingTransferTraceLevel.Add(key2, param.ExpandingTransferTraceLevels[key2]); } foreach (long key3 in param.CollapsingTransfers.Keys) { collapsingTransfers.Add(key3, param.CollapsingTransfers[key3]); } foreach (string key4 in param.ExpandingActivities.Keys) { expandingActivities.Add(key4, param.ExpandingActivities[key4]); } foreach (int key5 in param.SuppressedExecutions.Keys) { suppressedExecutions.Add(key5, param.SuppressedExecutions[key5]); } foreach (int item in param.executionItemOrder) { if (!executionItemOrder.Contains(item)) { executionItemOrder.AddLast(item); } } } }
private void activityPlusBox_Click(object sender, EventArgs e) { if (sender != null && sender is PictureBox && ((PictureBox)sender).Tag != null) { PictureBox pictureBox = (PictureBox)sender; if (pictureBox.Tag != null && pictureBox.Tag is ActivityLabelTag) { ActivityLabelTag activityLabelTag = (ActivityLabelTag)pictureBox.Tag; switch (activityLabelTag.expectedExpandingLevel) { case ExpandingLevel.ExpandAll: { ActivityTraceModeAnalyzerParameters parameters2 = activityLabelTag.analyzer.Parameters; parameters2 = ((parameters2 != null) ? new ActivityTraceModeAnalyzerParameters(parameters2) : new ActivityTraceModeAnalyzerParameters()); parameters2.AppendExpandingActivity(activityLabelTag.activityColumnItem.CurrentActivity.Id, ExpandingLevel.ExpandAll); container.AnalysisActivityInTraceMode(activityLabelTag.analyzer.ActiveActivity, null, parameters2); break; } case ExpandingLevel.ExpandTransferOut: { ActivityTraceModeAnalyzerParameters parameters = activityLabelTag.analyzer.Parameters; parameters = ((parameters != null) ? new ActivityTraceModeAnalyzerParameters(parameters) : new ActivityTraceModeAnalyzerParameters()); parameters.AppendExpandingActivity(activityLabelTag.activityColumnItem.CurrentActivity.Id, ExpandingLevel.ExpandTransferOut); container.AnalysisActivityInTraceMode(activityLabelTag.analyzer.ActiveActivity, null, parameters); break; } } } } }
internal override bool BeforePerformAnalysis(object parameters) { if (parameters != null && parameters is ActivityTraceModeAnalyzerParameters) { this.parameters = (ActivityTraceModeAnalyzerParameters)parameters; } return(true); }
private void menuItem_Click(object sender, EventArgs e) { ActivityTraceModeAnalyzerParameters parameters = CurrentExecutionColumnItem.Analyzer.Parameters; parameters = ((parameters != null) ? new ActivityTraceModeAnalyzerParameters(parameters) : new ActivityTraceModeAnalyzerParameters()); parameters.AppendSuppressedExecution(CurrentExecutionColumnItem.CurrentExecutionInfo); base.Container.AnalysisActivityInTraceMode(CurrentExecutionColumnItem.Analyzer.ActiveActivity, null, parameters); }
internal void PerformCollapse() { if (isToChildActivity && CurrentTraceRecordItem.CurrentTraceRecord != null && CurrentTraceRecordItem.CurrentTraceRecord.IsTransfer && CurrentTraceRecordItem.CurrentTraceRecord.DataSource != null && CurrentTraceRecordItem.CurrentTraceRecord.DataSource.Activities.ContainsKey(CurrentTraceRecordItem.CurrentTraceRecord.RelatedActivityID)) { ActivityTraceModeAnalyzerParameters parameters = CurrentTraceRecordItem.Analyzer.Parameters; parameters = ((parameters != null) ? new ActivityTraceModeAnalyzerParameters(parameters) : new ActivityTraceModeAnalyzerParameters()); try { parameters.AppendCollapsingTransfer(CurrentTraceRecordItem.CurrentTraceRecord); } catch (TraceViewerException ex) { base.ErrorReport.ReportErrorToUser(SR.GetString("SL_FailCollapseTransfer") + ex.Message); } base.Container.AnalysisActivityInTraceMode(CurrentActivityColumnItem.Analyzer.ActiveActivity, CurrentTraceRecordItem.CurrentTraceRecord, parameters); } }
private void ProcessListItem_Click(object sender, EventArgs e) { if (sender != null && sender is ToolStripMenuItem && ((ToolStripMenuItem)sender).Tag != null && ((ToolStripMenuItem)sender).Tag is ExecutionColumnItem) { ExecutionColumnItem executionColumnItem = (ExecutionColumnItem)((ToolStripMenuItem)sender).Tag; if (currentAnalyzer != null) { ActivityTraceModeAnalyzerParameters activityTraceModeAnalyzerParameters = currentAnalyzer.Parameters; activityTraceModeAnalyzerParameters = ((activityTraceModeAnalyzerParameters != null) ? new ActivityTraceModeAnalyzerParameters(activityTraceModeAnalyzerParameters) : new ActivityTraceModeAnalyzerParameters()); ((ToolStripMenuItem)sender).Checked = !((ToolStripMenuItem)sender).Checked; if (((ToolStripMenuItem)sender).Checked) { activityTraceModeAnalyzerParameters.RemoveSuppressedExecution(executionColumnItem.CurrentExecutionInfo); } else { activityTraceModeAnalyzerParameters.AppendSuppressedExecution(executionColumnItem.CurrentExecutionInfo); } base.Container.AnalysisActivityInTraceMode(currentAnalyzer.ActiveActivity, null, activityTraceModeAnalyzerParameters); } } }
public ActivityTraceModeAnalyzer(Activity activeActivity, TraceDataSource dataSource, bool containsActivityBoundary, bool containsVerboseTraces, ActivityTraceModeAnalyzerParameters parameters, IErrorReport errorReport) { if (activeActivity != null && dataSource != null) { this.containsActivityBoundary = containsActivityBoundary; this.containsVerboseTraces = containsVerboseTraces; this.activeActivity = activeActivity; this.dataSource = dataSource; this.parameters = parameters; this.errorReport = errorReport; RuntimeHelpers.PrepareConstrainedRegions(); try { AnalysisRootActivity(ActiveActivity); ExpandTransfers(); CollapseTransfers(); ExpandActivities(); CheckSuppressedActivities(); SortResults(); UpdateParameters(); } catch (LogFileException e) { throw new TraceViewerException(SR.GetString("SL_ERROR_LOAD_TRACE"), e); } catch (TraceViewerException ex) { throw ex; } catch (Exception e2) { ExceptionManager.GeneralExceptionFilter(e2); throw new TraceViewerException(SR.GetString("SL_UnknownException"), e2); } } }
private void SortResults() { Dictionary <int, List <TraceRecord> > dictionary = new Dictionary <int, List <TraceRecord> >(); Dictionary <int, List <TraceRecord> > dictionary2 = new Dictionary <int, List <TraceRecord> >(); long num = 0L; ExecutionInfo executionInfo = null; DateTime t = DateTime.MaxValue; foreach (TraceRecord value in results.Values) { if (Parameters == null || !Parameters.SuppressedExecutions.ContainsKey(value.Execution.ExecutionID)) { num += value.TraceID; } if (value.Time < t) { executionInfo = value.Execution; t = value.Time; } if (!dictionary.ContainsKey(value.Execution.ExecutionID)) { dictionary.Add(value.Execution.ExecutionID, new List <TraceRecord>()); } dictionary[value.Execution.ExecutionID].Add(value); } renderingHashCode = (int)num; SortedList <TraceRecord, int> sortedList = new SortedList <TraceRecord, int>(new TraceRecordComparer()); foreach (int key in dictionary.Keys) { sortedList.Add(dictionary[key][0], key); } for (int i = 0; i < sortedList.Count; i++) { dictionary2.Add(sortedList.Values[i], dictionary[sortedList.Values[i]]); } int num2 = (executionInfo != null) ? 1 : 0; Queue <ExecutionColumnItem> queue = new Queue <ExecutionColumnItem>(); ExecutionColumnItem executionColumnItem = null; foreach (int key2 in dictionary2.Keys) { dictionary2[key2].Sort(new TraceRecordComparer()); ExecutionColumnItem executionColumnItem2 = null; if (executionInfo == null) { executionColumnItem2 = new ExecutionColumnItem(dictionary2[key2][0].Execution, ActiveActivity, AllActivities, num2++, suppressedActivityIds, this); queue.Enqueue(executionColumnItem2); } else { executionColumnItem2 = new ExecutionColumnItem(dictionary2[key2][0].Execution, ActiveActivity, AllActivities, (executionInfo.ExecutionID != dictionary2[key2][0].Execution.ExecutionID) ? num2++ : 0, suppressedActivityIds, this); if (executionInfo.ExecutionID == dictionary2[key2][0].Execution.ExecutionID) { executionColumnItem = executionColumnItem2; } else { queue.Enqueue(executionColumnItem2); } } foreach (TraceRecord item in dictionary2[key2]) { TraceRecordCellItem traceRecordCellItem = executionColumnItem2.AppendTraceRecord(item); if (traceRecordCellItem != null && (traceRecordCellItem.CurrentTraceRecord.IsMessageSentRecord || traceRecordCellItem.CurrentTraceRecord.IsMessageReceivedRecord || traceRecordCellItem.CurrentTraceRecord.IsMessageLogged)) { messageRelatedItems.Add(traceRecordCellItem); } } } if (parameters == null) { parameters = new ActivityTraceModeAnalyzerParameters(); } if (executionColumnItem != null && executionColumnItem.ActivityColumnCount != 0) { if (!Parameters.SuppressedExecutions.ContainsKey(executionColumnItem.CurrentExecutionInfo.ExecutionID)) { executionItems.Add(executionColumnItem); } allInvolvedExecutionItems.Add(executionColumnItem); Parameters.PushExecutionColumnItem(executionColumnItem); } while (queue.Count != 0) { ExecutionColumnItem executionColumnItem3 = queue.Dequeue(); if (executionColumnItem3.ActivityColumnCount != 0) { if (!Parameters.SuppressedExecutions.ContainsKey(executionColumnItem3.CurrentExecutionInfo.ExecutionID)) { executionItems.Add(executionColumnItem3); } allInvolvedExecutionItems.Add(executionColumnItem3); parameters.PushExecutionColumnItem(executionColumnItem3); } } Parameters.ReorderExecutionColumnItems(executionItems); AnalyzeCrossExecutionMessageExchange(); AnalyzePairedActivities(); }