aboutsummaryrefslogtreecommitdiff
path: root/src/esieequest/engine/scheduler/SysScheduler.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/esieequest/engine/scheduler/SysScheduler.java')
-rw-r--r--src/esieequest/engine/scheduler/SysScheduler.java61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/esieequest/engine/scheduler/SysScheduler.java b/src/esieequest/engine/scheduler/SysScheduler.java
new file mode 100644
index 0000000..e5a5947
--- /dev/null
+++ b/src/esieequest/engine/scheduler/SysScheduler.java
@@ -0,0 +1,61 @@
1package esieequest.engine.scheduler;
2
3import java.util.Timer;
4import java.util.TimerTask;
5
6/**
7 * The standard Java Timer adapter.
8 *
9 * @author Pacien TRAN-GIRARD
10 */
11public class SysScheduler implements Scheduler {
12
13 private final Timer timer;
14 private TimerTask timerTask;
15
16 /**
17 * Creates a new scheduler.
18 */
19 public SysScheduler() {
20 this.timer = new Timer();
21 }
22
23 @Override
24 public void schedule(final Callback callback, final int time) {
25 this.cancel();
26
27 this.timerTask = new TimerTask() {
28 @Override
29 public void run() {
30 callback.call();
31 }
32 };
33 this.timer.schedule(this.timerTask, time);
34 }
35
36 @Override
37 public void cancel() {
38 if (this.timerTask == null) {
39 return;
40 }
41 this.timerTask.cancel();
42 }
43
44 @Override
45 public void run() {
46 if (this.timerTask == null) {
47 return;
48 }
49 this.cancel();
50 this.timerTask.run();
51 }
52
53 @Override
54 public boolean isRunning() {
55 if (this.timerTask == null) {
56 return false;
57 }
58 return this.timerTask.scheduledExecutionTime() == 0L;
59 }
60
61}