/***************************************************************************** * Copyright [2013] [Jules White] * * * * Licensed under the Apache License, Version 2.0 (the "License"); * * you may not use this file except in compliance with the License. * * You may obtain a copy of the License at * * * * http://www.apache.org/licenses/LICENSE-2.0 * * * * Unless required by applicable law or agreed to in writing, software * * distributed under the License is distributed on an "AS IS" BASIS, * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * * See the License for the specific language governing permissions and * * limitations under the License. * ****************************************************************************/ package org.magnum.soda.test.protocols; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class TaskCoordinatorImpl implements TaskCoordinator { private List<Task> tasks_ = new ArrayList<Task>(); private Map<Task, TaskResult> results_ = new HashMap<Task, TaskResult>(); private boolean running_ = false; @Override public void addTask(Task t) { tasks_.add(t); } @Override public void reportResult(Task t, TaskResult result) { results_.put(t, result); } @Override public TaskResult getResultFor(Task t) { return results_.get(t); } public synchronized void runAll() { running_ = true; for (Task t : tasks_) { t.run(this); } running_ = false; notifyAll(); } @Override public synchronized void waitForCompletion() { if(running_){ try{wait();}catch(Exception e){} } } @Override public Task nthTask(int i) { return tasks_.get(i); } }