Fork of Poseidon providing Bukkit #1060 to older Beta versions (b1.0-b1.7.3)
1package org.bukkit.craftbukkit.scheduler;
2
3import org.bukkit.plugin.Plugin;
4
5import java.util.HashSet;
6import java.util.Iterator;
7
8public class CraftThreadManager {
9
10 final HashSet<CraftWorker> workers = new HashSet<CraftWorker>();
11
12 void executeTask(Runnable task, Plugin owner, int taskId) {
13
14 CraftWorker craftWorker = new CraftWorker(this, task, owner, taskId);
15 synchronized (workers) {
16 workers.add(craftWorker);
17 }
18
19 }
20
21 void interruptTask(int taskId) {
22 synchronized (workers) {
23 Iterator<CraftWorker> itr = workers.iterator();
24 while (itr.hasNext()) {
25 CraftWorker craftWorker = itr.next();
26 if (craftWorker.getTaskId() == taskId) {
27 craftWorker.interrupt();
28 }
29 }
30 }
31 }
32
33 void interruptTasks(Plugin owner) {
34 synchronized (workers) {
35 Iterator<CraftWorker> itr = workers.iterator();
36 while (itr.hasNext()) {
37 CraftWorker craftWorker = itr.next();
38 if (craftWorker.getOwner().equals(owner)) {
39 craftWorker.interrupt();
40 }
41 }
42 }
43 }
44
45 void interruptAllTasks() {
46 synchronized (workers) {
47 Iterator<CraftWorker> itr = workers.iterator();
48 while (itr.hasNext()) {
49 CraftWorker craftWorker = itr.next();
50 craftWorker.interrupt();
51 }
52 }
53 }
54
55 boolean isAlive(int taskId) {
56 synchronized (workers) {
57 Iterator<CraftWorker> itr = workers.iterator();
58 while (itr.hasNext()) {
59 CraftWorker craftWorker = itr.next();
60 if (craftWorker.getTaskId() == taskId) {
61 return craftWorker.isAlive();
62 }
63 }
64 // didn't find it, so it must have been removed
65 return false;
66 }
67 }
68}