samer@0: /* samer@0: * Copyright (c) 2001, Samer Abdallah, King's College London. samer@0: * All rights reserved. samer@0: * samer@0: * This software is provided AS iS and WITHOUT ANY WARRANTY; samer@0: * without even the implied warranty of MERCHANTABILITY or samer@0: * FITNESS FOR A PARTICULAR PURPOSE. samer@0: */ samer@0: samer@0: package samer.tools; samer@0: import samer.core.types.*; samer@0: samer@0: /** samer@0: * This is a task that runs a single child task samer@0: * every N iterations, that is, at some integer samer@0: * sub-multiple of the main loop rate samer@0: */ samer@0: samer@0: public class SwitchTask implements Task samer@0: { samer@0: private Task task; samer@0: private VBoolean enable; samer@0: samer@0: public SwitchTask(Task t) { this(true,t); } samer@0: public SwitchTask(boolean e, Task t) { samer@0: enable=new VBoolean("enable",e); samer@0: enable.value=e; enable.changed(); task=t; samer@0: } samer@0: samer@0: samer@0: public void enable() { enable.value=true; enable.changed(); } samer@0: public void disable() { enable.value=false; enable.changed(); } samer@0: samer@0: public final void starting() { if (enable.value) task.starting(); } samer@0: public final void stopping() { if (enable.value) task.stopping(); } samer@0: public final void run() throws Exception { if (enable.value) task.run(); } samer@0: samer@0: public void dispose() { task.dispose(); } samer@0: public String toString() { return "Switch("+enable.value+"):"+task; } samer@0: }