package com.linkedin.parseq; import java.util.concurrent.TimeUnit; /** * This interface represents an arrival process. It contains one method that returns number of nanoseconds * until next arrival. * * @author Jaroslaw Odzga (jodzga@linkedin.com) */ public interface EventsArrival { /** * Returns number of nanoseconds until next arrival. * @return */ long nanosToNextEvent(); static EventsArrival fromName(final String name, final double events, final TimeUnit perUnit) { switch (name) { case "poisson": return new PoissonEventsArrival(events, perUnit); case "uniform": return new UniformEventsArrival(events, perUnit); } throw new IllegalArgumentException("unsupported events arrival type: " + name); } }