package com.team254.lib.util; import java.util.Vector; /** * MultiLooper.java * <p> * Runs several Loopables simultaneously with one Looper. * Useful for running a bunch of control loops * with only one Thread worth of overhead. * * @author Tom Bottiglieri */ public class MultiLooper implements Loopable { private Looper looper; private Vector<Loopable> loopables = new Vector<Loopable>(); public MultiLooper(String name, double period, boolean use_notifier) { if (use_notifier) { looper = new NotifierLooper(name, this, period); } else { looper = new Looper(name, this, period); } } public MultiLooper(String name, double period) { this(name, period, false); } public void update() { int i; for (i = 0; i < loopables.size(); ++i) { Loopable c = loopables.elementAt(i); if (c != null) { c.update(); } } } public void start() { if (looper instanceof NotifierLooper) { NotifierLooper nl = (NotifierLooper) looper; nl.start(); } else { looper.start(); } } public void stop() { looper.stop(); } public void addLoopable(Loopable c) { loopables.addElement(c); } }