package xapi.process; import java.util.Queue; import java.util.concurrent.LinkedBlockingDeque; import xapi.annotation.process.ManyToOne; import xapi.annotation.process.OneToMany; import xapi.annotation.process.OneToOne; import xapi.process.impl.AbstractProcess; public class ProcessTest extends AbstractProcess<Void>{ static class Signal{ } @OneToMany(stage=1) public Queue<Signal> fanOut() { //we don't need to actually fill this list now. //so long as the iterable blocks until it has exhausted it's supply of data final Queue<Signal> list = new LinkedBlockingDeque<Signal>(); return list; } @OneToOne(stage=2) public void processItem(Signal item, int index) { } @ManyToOne(stage=2) public void fanIn(Signal[] all) { } @OneToOne(stage=3) public void cleanup() { } }