diff options
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/git/WorkQueue.java')
-rw-r--r-- | gerrit-server/src/main/java/com/google/gerrit/server/git/WorkQueue.java | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/WorkQueue.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/WorkQueue.java index bb11e6252e..66f01f611b 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/WorkQueue.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/WorkQueue.java @@ -14,6 +14,7 @@ package com.google.gerrit.server.git; +import com.google.common.collect.Lists; import com.google.gerrit.extensions.events.LifecycleListener; import com.google.gerrit.lifecycle.LifecycleModule; import com.google.gerrit.reviewdb.client.Project.NameKey; @@ -26,6 +27,7 @@ import org.slf4j.LoggerFactory; import java.lang.Thread.UncaughtExceptionHandler; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.ConcurrentHashMap; @@ -115,6 +117,16 @@ public class WorkQueue { return r; } + public <T> List<T> getTaskInfos(TaskInfoFactory<T> factory) { + List<T> taskInfos = Lists.newArrayList(); + for (Executor exe : queues) { + for (Task<?> task : exe.getTasks()) { + taskInfos.add(factory.getTaskInfo(task)); + } + } + return taskInfos; + } + /** Locate a task by its unique id, null if no task matches. */ public Task<?> getTask(final int id) { Task<?> result = null; @@ -186,7 +198,7 @@ public class WorkQueue { Task<V> task; if (runnable instanceof ProjectRunnable) { - task = new ProjectTask<V>((ProjectRunnable)runnable, r, this, id); + task = new ProjectTask<V>((ProjectRunnable) runnable, r, this, id); } else { task = new Task<V>(runnable, r, this, id); } @@ -214,6 +226,10 @@ public class WorkQueue { void addAllTo(final List<Task<?>> list) { list.addAll(all.values()); // iterator is thread safe } + + Collection<Task<?>> getTasks() { + return all.values(); + } } /** Runnable needing to know it was canceled. */ @@ -351,8 +367,9 @@ public class WorkQueue { } } - /** Same as Task class, but with a reference to ProjectRunnable, used to retrieve - * the project name from the operation queued + /** + * Same as Task class, but with a reference to ProjectRunnable, used to + * retrieve the project name from the operation queued **/ public static class ProjectTask<V> extends Task<V> implements ProjectRunnable { |