public Stream(INodeContext sourceNode, IPushObservable <T> observable) { this.SourceNode = sourceNode; var rowTracer = new RowTracer(); var executionContext = this.SourceNode.ExecutionContext; this.Observable = observable.Filter(i => !executionContext.Terminating); if (!this.SourceNode.ExecutionContext.IsTracingContext) { if (executionContext.UseDetailedTraces) { PushObservable.Merge <ITraceContent>( this.Observable.Map(rowTracer.ProcessRow), this.Observable.Count().Map(count => new CounterSummaryStreamTraceContent(count)), this.Observable.ExceptionsToObservable().Map(e => new UnhandledExceptionStreamTraceContent(e)) ).Do(i => this.SourceNode.ExecutionContext.AddTrace(i, sourceNode)); } else { PushObservable.Merge <ITraceContent>( this.Observable.Count().Map(count => new CounterSummaryStreamTraceContent(count)), this.Observable.ExceptionsToObservable().Map(e => new UnhandledExceptionStreamTraceContent(e)) ).Do(i => this.SourceNode.ExecutionContext.AddTrace(i, sourceNode)); } } }
public Stream(ITraceMapper traceMapper, IExecutionContext executionContext, string sourceNodeName, IPushObservable <T> observable) { this.TraceMapper = traceMapper; this.SourceNodeName = sourceNodeName; this.ExecutionContext = executionContext; this.Observable = observable.TakeUntil(executionContext.StopProcessEvent); if (traceMapper != null) { this.TraceObservable = PushObservable.Merge <ITraceContent>( this.Observable.ExceptionsToObservable().Map(e => new UnhandledExceptionStreamTraceContent(e)), this.Observable.Count().Map(count => new CounterSummaryStreamTraceContent(count)), this.Observable.Map((e, i) => new RowProcessStreamTraceContent(i + 1, e)) ).Map(i => traceMapper.MapToTrace(i, executionContext.NextTraceSequence())); } }
public Stream(ITracer tracer, IExecutionContext executionContext, string sourceNodeName, IPushObservable <T> observable) { this.Tracer = tracer; this.SourceNodeName = sourceNodeName; this.ExecutionContext = executionContext; this.Observable = observable .CompletesOnException(e => tracer.Trace(new UnhandledExceptionStreamTraceContent(e))) .TakeUntil(executionContext.StopProcessEvents); if (tracer != null) { PushObservable.Merge <ITraceContent>( this.Observable.Count().Map(count => new CounterSummaryStreamTraceContent(count)), this.Observable.Map((e, i) => new RowProcessStreamTraceContent(i + 1, e)) ).Subscribe(tracer.Trace); } }