@Override Task<?> createPlan() { List<Task<?>> l = new ArrayList<>(); for (int i = 0; i < 20; i++) { l.add(task()); } return Tasks.par(l); }
private Task<?> fetchAndLog(final String url) { final Task<String> fetch = fetchUrl(_httpClient, url); final Task<?> logResult = logResult(url, fetch); return seq(fetch, logResult); }
private static Task<Integer> add(final int x, final int toAdd) { return callable("add " + toAdd, new Callable<Integer>() { @Override public Integer call() { return x + toAdd; } }); }
@Override public Promise<String> run(final Context ctx) { final Task<String> twoStage = seq(par(fetchAndLog("http://www.bing.com"), fetchAndLog("http://www.yahoo.com")), par(fetchAndLog("http://www.google.com"), fetchAndLog("https://duckduckgo.com/")), buildResult()); ctx.run(twoStage); return twoStage; }
@Override protected void doRunExample(final Engine engine) throws Exception { final MockService<String> httpClient = getService(); final Task<String> fetchBing = fetchUrl(httpClient, "http://www.bing.com"); final Task<String> fetchYahoo = fetchUrl(httpClient, "http://www.yahoo.com"); final Task<String> fetchGoogle = fetchUrl(httpClient, "http://www.google.com"); final Task<?> printResults = action("printResults", new Runnable() { @Override public void run() { System.out.println("Bing => " + fetchBing.get()); System.out.println("Yahoo => " + fetchYahoo.get()); System.out.println("Google => " + fetchGoogle.get()); } }); final Task<?> parFetch = par(fetchBing, fetchGoogle, fetchYahoo); final Task<?> fanIn = seq(parFetch, printResults); engine.run(fanIn); fanIn.await(); printTracingResults(fanIn); } }
/** * @deprecated As of 2.0.0, replaced by {@link Task#par(Task, Task) Task.par} * @see Task#par(Task, Task) Task.par */ @Deprecated public static <T> ParTask<T> par(Task<? extends T> task1, Task<? extends T> task2, Task<? extends T> task3, Task<? extends T> task4, Task<? extends T> task5, Task<? extends T> task6) { return vapar(task1, task2, task3, task4, task5, task6); }
/** * @deprecated As of 2.0.0, replaced by {@link Task#map(String, com.linkedin.parseq.function.Function1) Task.map}, * {@link Task#flatMap(String, com.linkedin.parseq.function.Function1) Task.flatMap}, * {@link Task#andThen(String, Task) Task.andThen} and other methods in {@link Task}. * @see Task#map(String, com.linkedin.parseq.function.Function1) Task.map * @see Task#flatMap(String, com.linkedin.parseq.function.Function1) Task.flatMap * @see Task#andThen(String, Task) Task.andThen * @see Task */ @Deprecated public static <T> Task<T> seq(Task<?> task1, Task<?> task2, Task<T> task3) { return vaseq(task1, task2, task3); }
@Override protected void doRunExample(final Engine engine) throws Exception { final MockService<String> httpClient = getService(); final Task<String> fetch = fetch404Url(httpClient, "http://www.google.com"); final Task<Integer> length = callable("length", new Callable<Integer>() { @Override public Integer call() { return fetch.getOrDefault("").length(); } }); final Task<Integer> fetchAndLength = seq(fetch, length); engine.run(fetchAndLength); fetchAndLength.await(); System.out.println("Response length: " + fetchAndLength.get()); ExampleUtil.printTracingResults(fetchAndLength); } }
@Override protected void doRunExample(final Engine engine) throws Exception { final MockService<String> httpClient = getService(); final FanoutTask fanout = new FanoutTask(httpClient); final Task<?> printResults = action("printResults", new Runnable() { @Override public void run() { System.out.println(fanout.get()); } }); final Task<?> plan = seq(fanout, printResults); engine.run(plan); plan.await(); printTracingResults(plan); }
private Task<?> addResponse(final Promise<Integer> response) { return action("addResponse", new Runnable() { @Override public void run() { _responses.add(response.get()); } }); } }
/** * @deprecated As of 2.0.0, replaced by {@link Task#par(Task, Task) Task.par} * @see Task#par(Task, Task) Task.par */ @Deprecated public static <T> ParTask<T> par(Task<? extends T> task1, Task<? extends T> task2, Task<? extends T> task3, Task<? extends T> task4) { return vapar(task1, task2, task3, task4); }
/** * @deprecated As of 2.0.0, replaced by {@link Task#map(String, com.linkedin.parseq.function.Function1) Task.map}, * {@link Task#flatMap(String, com.linkedin.parseq.function.Function1) Task.flatMap}, * {@link Task#andThen(String, Task) Task.andThen} and other methods in {@link Task}. * @see Task#map(String, com.linkedin.parseq.function.Function1) Task.map * @see Task#flatMap(String, com.linkedin.parseq.function.Function1) Task.flatMap * @see Task#andThen(String, Task) Task.andThen * @see Task */ @Deprecated public static <T> Task<T> seq(Task<?> task1, Task<?> task2, Task<?> task3, Task<?> task4, Task<T> task5) { return vaseq(task1, task2, task3, task4, task5); }
@Override protected void doRunExample(final Engine engine) throws Exception { final MockService<String> httpClient = getService(); final Task<String> fetch = fetch404Url(httpClient, "http://www.google.com"); final Task<Integer> length = callable("length", new Callable<Integer>() { @Override public Integer call() { return fetch.get().length(); } }); final Task<Integer> fetchAndLength = seq(fetch, length); engine.run(fetchAndLength); fetchAndLength.await(); System.out.println("Error while fetching url: " + fetchAndLength.getError()); ExampleUtil.printTracingResults(fetchAndLength); } }
private Task<?> logResult(final String url, final Promise<String> promise) { return action("logResult[" + url + "]", new Runnable() { @Override public void run() { _result.append(String.format("%10s => %s\n", url, promise.get())); } }); } }
/** * Creates a new task that will run each of the supplied tasks in parallel (e.g. * tasks[0] can be run at the same time as task2). <strong>This method is not * type-safe</strong> - prefer one of the {@code par} options when possible. * <p> * When all tasks complete successfully, you can use * {@link com.linkedin.parseq.ParTask#get()} to get a list of the results. If * at least one task failed, then this task will also be marked as failed. Use * {@link com.linkedin.parseq.ParTask#getTasks()} or * {@link com.linkedin.parseq.ParTask#getSuccessful()} to get results in this * case. * * @param tasks the tasks to run in parallel * @return a new task that will run the given tasks in parallel */ private static <T> ParTask<T> vapar(final Task<?>... tasks) { final List<Task<T>> taskList = new ArrayList<Task<T>>(tasks.length); for (Task<?> task : tasks) { @SuppressWarnings("unchecked") final Task<T> typedTask = (Task<T>) task; taskList.add(typedTask); } return par(taskList); } }
@SuppressWarnings("deprecation") @Test public void testIterableSeqWithEmptyList() { try { seq(Collections.<Task<?>> emptyList()); fail("Should have thrown IllegalArgumentException"); } catch (IllegalArgumentException e) { // Expected case } }
/** * @deprecated As of 2.0.0, replaced by {@link Task#par(Task, Task) Task.par} * @see Task#par(Task, Task) Task.par */ @Deprecated public static <T> ParTask<T> par(Task<? extends T> task1, Task<? extends T> task2, Task<? extends T> task3, Task<? extends T> task4, Task<? extends T> task5, Task<? extends T> task6, Task<? extends T> task7) { return vapar(task1, task2, task3, task4, task5, task6, task7); }
/** * @deprecated As of 2.0.0, replaced by {@link Task#map(String, com.linkedin.parseq.function.Function1) Task.map}, * {@link Task#flatMap(String, com.linkedin.parseq.function.Function1) Task.flatMap}, * {@link Task#andThen(String, Task) Task.andThen} and other methods in {@link Task}. * @see Task#map(String, com.linkedin.parseq.function.Function1) Task.map * @see Task#flatMap(String, com.linkedin.parseq.function.Function1) Task.flatMap * @see Task#andThen(String, Task) Task.andThen * @see Task */ @Deprecated public static <T> Task<T> seq(Task<?> task1, Task<?> task2, Task<?> task3, Task<T> task4) { return vaseq(task1, task2, task3, task4); }
private Task<String> buildResult() { return callable("buildResult", new Callable<String>() { @Override public String call() { return _result.toString(); } }); }