public void start(FlowProcess fp, AggregatorCall<Tuple> call) {
call.setContext(null);
}
public void aggregate(FlowProcess fp, AggregatorCall<Tuple> call) {
ISeq fnArgs = RT.seq(Util.tupleToList(call.getArguments()));
if (null != prepareFn) {
fnArgs = RT.seq(Util.coerceToList(prepareFn.applyTo(fnArgs)));
}
Tuple context = call.getContext();
if (null == context) {
Tuple newContext = Tuple.size(1);
newContext.set(0, fnArgs);
call.setContext(newContext);
} else {
ISeq acc = (ISeq) context.getObject(0);
ISeq ret = RT.seq(Util.coerceToList(combineFn.applyTo(Util.cat(acc, fnArgs))));
context.set(0, ret);
}
}