package com.acme;
import org.springframework.xd.reactor.Processor;
import org.springframework.xd.tuple.Tuple;
import reactor.rx.Stream;
import static com.acme.Math.avg;
import static org.springframework.xd.tuple.TupleBuilder.tuple;
public class MovingAverage implements Processor<Tuple, Tuple> {
@Override
public Stream<Tuple> process(Stream<Tuple> inputStream) {
return inputStream.map(tuple -> {
//System.out.println("Inside Moving Average Thread Id = " + Thread.currentThread().getId());
return tuple.getDouble("measurement");
})
.buffer(5)
.map(data -> tuple().of("average", avg(data)));
}
}