package org.atomnuke.examples;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
import org.atomnuke.Nuke;
import org.atomnuke.NukeKernel;
import org.atomnuke.examples.eventlets.PrintStreamEventlet;
import org.atomnuke.examples.source.EventGenerator;
import org.atomnuke.sink.eps.EventletChainSink;
import org.atomnuke.task.atom.AtomTask;
import org.atomnuke.util.TimeValue;
/**
*
* @author zinic
*/
public class EventGeneratorMain {
public static void main(String[] args) throws Exception {
final NukeKernel nukeKernel = new NukeKernel();
final AtomicLong eventsProcessed = new AtomicLong(0);
for (int taskId = 1; taskId <= 30; taskId++) {
final AtomTask task = nukeKernel.follow(new EventGenerator("Task " + taskId, true), new TimeValue(100 * taskId, TimeUnit.NANOSECONDS));
final EventletChainSink relay = new EventletChainSink();
relay.enlistHandler(new PrintStreamEventlet(System.out, "Task " + taskId + " - Sink 1", eventsProcessed));
relay.enlistHandler(new PrintStreamEventlet(System.out, "Task " + taskId + " - Sink 2", eventsProcessed));
relay.enlistHandler(new PrintStreamEventlet(System.out, "Task " + taskId + " - Sink 3", eventsProcessed));
relay.enlistHandler(new PrintStreamEventlet(System.out, "Task " + taskId + " - Sink 4", eventsProcessed));
relay.enlistHandler(new PrintStreamEventlet(System.out, "Task " + taskId + " - Sink 5", eventsProcessed));
}
nukeKernel.start();
Thread.sleep(10000);
nukeKernel.destroy();
}
}