package com.linkedin.parseq.example.introduction;
import com.linkedin.parseq.Engine;
import com.linkedin.parseq.Task;
import com.linkedin.parseq.example.common.AbstractExample;
import com.linkedin.parseq.example.common.ExampleUtil;
import com.linkedin.parseq.httpclient.HttpClient;
/**
* @author Jaroslaw Odzga (jodzga@linkedin.com)
*/
public class IntroductoryExample extends AbstractExample {
public static void main(String[] args) throws Exception {
new IntroductoryExample().runExample();
HttpClient.close();
}
private Task<String> fetchBody(String url) {
return HttpClient.get(url).task()
.map("getBody", response -> response.getResponseBody());
}
@Override
protected void doRunExample(final Engine engine) throws Exception {
final Task<String> google = fetchBody("http://www.google.com");
final Task<String> yahoo = fetchBody("http://www.yahoo.com");
final Task<String> bing = fetchBody("http://www.bing.com");
// final Task<String> plan = Task.par(google, yahoo, bing)
// .map((g, y, b) -> "Google Page: " + g +" \n" +
// "Yahoo Page: " + y + "\n" +
// "Bing Page: " + b + "\n")
// .andThen(System.out::println);
final Task<Integer> sumLengths =
Task.par(google.map("length", s -> s.length()),
yahoo.map("length", s -> s.length()),
bing.map("length",s -> s.length()))
.map("sum", (g, y, b) -> g + y + b);
engine.run(sumLengths);
sumLengths.await();
ExampleUtil.printTracingResults(sumLengths);
}
}