/* $Id$ */
package com.linkedin.parseq.example.simple;
import com.linkedin.parseq.Engine;
import com.linkedin.parseq.Task;
import com.linkedin.parseq.example.common.AbstractExample;
import com.linkedin.parseq.example.common.MockService;
import static com.linkedin.parseq.Tasks.*;
import static com.linkedin.parseq.example.common.ExampleUtil.fetchUrl;
import static com.linkedin.parseq.example.common.ExampleUtil.printTracingResults;
/**
* @author Chris Pettitt (cpettitt@linkedin.com)
*/
public class FanInExample extends AbstractExample
{
public static void main(String[] args) throws Exception
{
new FanInExample().runExample();
}
@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);
}
}