1 package edu.berkeley.fleet.dataflow;
2 import edu.berkeley.fleet.loops.*;
3 import edu.berkeley.fleet.api.*;
5 public class OnceNode extends Node {
7 public final OutPort out = new OutPort("out") {
8 public void sendToken(LoopFactory lf) { }
9 public void recvWord(LoopFactory lf) { }
10 public void build(Context ctx) { }
11 public int reset(Context ctx, int phase, Destination ackDestination) { return 0; }
12 public void setPeer(InPort peer) {
14 DockInPort pip = ((DockInPort)peer);
15 BitVector[] pip_pattern = pip.pattern;
16 BitVector[] temp = new BitVector[pip_pattern.length * 2];
20 // FIXME: if peer.count is already 1, this gets simpler and different
21 for(i=0; i<temp.length; i++) {
22 if (pip_pattern[j] != null) {
23 temp[i] = pip_pattern[j];
30 if (j >= pip_pattern.length) j = 0;
32 pip.pattern = new BitVector[i];
33 System.arraycopy(temp, 0, pip.pattern, 0, i);
37 public OnceNode(DataFlowGraph dfg, long l) { this(dfg, new BitVector(dfg.fleet.getWordWidth()).set(l)); }
38 public OnceNode(DataFlowGraph dfg, final BitVector bv) { super(dfg); this.bv = bv; }