Exemplo n.º 1
0
        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));
                }
            }
        }
Exemplo n.º 2
0
        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()));
            }
        }
Exemplo n.º 3
0
        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);
            }
        }