samer@0
|
1 /*
|
samer@0
|
2 * Copyright (c) 2001, Samer Abdallah, King's College London.
|
samer@0
|
3 * All rights reserved.
|
samer@0
|
4 *
|
samer@0
|
5 * This software is provided AS iS and WITHOUT ANY WARRANTY;
|
samer@0
|
6 * without even the implied warranty of MERCHANTABILITY or
|
samer@0
|
7 * FITNESS FOR A PARTICULAR PURPOSE.
|
samer@0
|
8 */
|
samer@0
|
9
|
samer@0
|
10 package samer.tools;
|
samer@0
|
11 import samer.core.types.*;
|
samer@0
|
12
|
samer@0
|
13 /**
|
samer@0
|
14 * This is a task that runs a single child task
|
samer@0
|
15 * every N iterations, that is, at some integer
|
samer@0
|
16 * sub-multiple of the main loop rate
|
samer@0
|
17 */
|
samer@0
|
18
|
samer@0
|
19 public class SwitchTask implements Task
|
samer@0
|
20 {
|
samer@0
|
21 private Task task;
|
samer@0
|
22 private VBoolean enable;
|
samer@0
|
23
|
samer@0
|
24 public SwitchTask(Task t) { this(true,t); }
|
samer@0
|
25 public SwitchTask(boolean e, Task t) {
|
samer@0
|
26 enable=new VBoolean("enable",e);
|
samer@0
|
27 enable.value=e; enable.changed(); task=t;
|
samer@0
|
28 }
|
samer@0
|
29
|
samer@0
|
30
|
samer@0
|
31 public void enable() { enable.value=true; enable.changed(); }
|
samer@0
|
32 public void disable() { enable.value=false; enable.changed(); }
|
samer@0
|
33
|
samer@0
|
34 public final void starting() { if (enable.value) task.starting(); }
|
samer@0
|
35 public final void stopping() { if (enable.value) task.stopping(); }
|
samer@0
|
36 public final void run() throws Exception { if (enable.value) task.run(); }
|
samer@0
|
37
|
samer@0
|
38 public void dispose() { task.dispose(); }
|
samer@0
|
39 public String toString() { return "Switch("+enable.value+"):"+task; }
|
samer@0
|
40 }
|