internal Step(StepsRecorder stepsRecorder, ITimeSource timeSource,
               ExpressionEvaluationEngine engine)
 {
     _startTicks    = timeSource.GetTimestampTicks();
     _stepsRecorder = stepsRecorder;
     _timeSource    = timeSource;
     _engine        = engine;
     _finalized     = false;
 }
        public void Record(ExpressionEvaluationStrategy strategy,
                           ExpressionEvaluationContext context, StepsRecorder stepsRecorder,
                           long startTimestampUs, long endTimestampUs, string natvisValueId)
        {
            var batchParams = new ExpressionEvaluationBatchParams(
                strategy, context, stepsRecorder.GetStepsList(), startTimestampUs, endTimestampUs,
                natvisValueId);

            _batchEventAggregator.Add(batchParams);
        }
        public void Record(ExpressionEvaluationStrategy expressionEvaluationStrategy,
                           ExpressionEvaluationContext expressionEvaluationContext,
                           StepsRecorder stepsRecorder, long startTimestampUs, long endTimestampUs)
        {
            // Expression evaluation with 'Value' context should use the method signature that
            // includes the natvisValueId parameter. This method is only meant to be used by
            // 'Frame' context expression evaluations.
            if (expressionEvaluationContext == ExpressionEvaluationContext.VALUE)
            {
                throw new ArgumentException(
                          "Record method invocation with 'Value' context should include natvisValueId.");
            }

            Record(expressionEvaluationStrategy, expressionEvaluationContext, stepsRecorder,
                   startTimestampUs, endTimestampUs, null);
        }