package SimkitOpenDis7Examples; import simkit.SimEntityBase; import simkit.random.RandomVariate; /** * One of the simplest non-trivial Event Graph models. A series of Arrival * events is scheduled based on an inter arrival time random variate. The state * variable, simply counts the number of these arrivals. * * @author abuss@nps.edu */ public class ArrivalProcess extends SimEntityBase { /** * Generates interarrival times */ private RandomVariate interarrivalTimeGenerator; /** * State variable that counts the number of Arrival events */ protected int numberArrivals; /** * Instantiate an ArrivalProcess with the given interarrivalTimeGenerator * * @param interarrivalTimeGenerator Given RandomVariate for interarrival * times */ public ArrivalProcess(RandomVariate interarrivalTimeGenerator) { this.setInterarrivalTimeGenerator(interarrivalTimeGenerator); } /** * If the ArrivalProcess is instantiated using the zero-argument * constructor, be sure the set the interarrivalTimeGenerator with an * explicit call to its setter method. */ public ArrivalProcess() { } /** * Initialize numberArrivals to 0 */ public void reset() { super.reset(); numberArrivals = 0; } /** * Schedule the first Arrival event with delay generated by * interarrivalTimeGenerator */ public void doRun() { firePropertyChange("numberArrivals", getNumberArrivals()); waitDelay("Arrival", interarrivalTimeGenerator); } /** * Increment numberArrivals<br> * Schedule next Arrival event with delay generated by * interarrivalTimeGenerator */ public void doArrival() { int oldNumberArrivals = getNumberArrivals(); numberArrivals += 1; firePropertyChange("numberArrivals", oldNumberArrivals, getNumberArrivals()); waitDelay("Arrival", interarrivalTimeGenerator); } /** * accessor method to get a state variable * @return the interarrivalTimeGenerator */ public RandomVariate getInterarrivalTimeGenerator() { return interarrivalTimeGenerator; } /** * accessor method to set a state variable * @param interarrivalTimeGenerator the interarrivalTimeGenerator to set */ public void setInterarrivalTimeGenerator(RandomVariate interarrivalTimeGenerator) { this.interarrivalTimeGenerator = interarrivalTimeGenerator; } /** * accessor method to get a state variable * @return the numberArrivals */ public int getNumberArrivals() { return numberArrivals; } }