Package jasima.core.simulation
Class SimContext
- java.lang.Object
-
- jasima.core.simulation.SimContext
-
public class SimContext extends Object
SimContextprovides static versions of the most frequently used simulation methods as well as static factory methods to create new simulations. By statically importing the methods fromSimContext, the most important simulation methods can be accessed in a more concise way or in contexts, where the current simulation can not be accessed easily.The currently active simulation is stored internally in a
ThreadLocalvariable. Most methods in this class callrequireSimContext()and then delegate to the corresponding method inSimulationor the simulation's currently activeSimProcess. Exceptions to this are the factory methodssimulationOf(String, SimAction)/async(String, SimAction)/createSim(String, SimAction).- Author:
- Torsten.Hildebrandt
-
-
Constructor Summary
Constructors Constructor Description SimContext()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static SimProcess<Void>activate(SimProcessUtil.SimAction a)static SimProcess<Void>activate(SimProcessUtil.SimRunnable r)static SimProcess<Void>activate(String name, SimProcessUtil.SimAction a)static SimProcess<Void>activate(String name, SimProcessUtil.SimRunnable r)static <T> SimProcess<T>activateCallable(SimProcessUtil.SimCallable<T> a)static <T> SimProcess<T>activateCallable(String name, SimProcessUtil.SimCallable<T> a)static <T> SimProcess<T>activateCallable(String name, Callable<T> c)static <T> SimProcess<T>activateCallable(Callable<T> c)static SimProcess<Void>activateEntity(SimEntity e)Activates the givenSimEntityand returns its lifecycle processSimulation.activateEntity(SimEntity).static voidaddResult(String name, Object value)static Future<Map<String,Object>>async(SimProcessUtil.SimAction a)static Future<Map<String,Object>>async(SimProcessUtil.SimRunnable r)static Future<Map<String,Object>>async(String name, SimProcessUtil.SimAction a)Create a new simulation and run it asynchronously in a background thread.static Future<Map<String,Object>>async(String name, SimProcessUtil.SimRunnable r)static SimulationcreateSim(String name, SimProcessUtil.SimAction a)Create a new simulation, but does not yet execute it.static SimProcess<?>currentProcess()static SimulationcurrentSimulation()Returns the currentSimulationornullif no simulation is currently assigned to the current thread.static voidend()static StringformattedMessage(Enum<?> key, Object... params)Simulation#formattedMessage(Enum, Object)static <T extends DblSequence>
TinitRndGen(T s, String streamName)static Stringmessage(Enum<?> key)static Stringmessage(String keyName)static SimulationrequireSimContext()Returns the currentSimulation.static SimEventschedule(SimEvent event)static SimEventscheduleAt(double time, int prio, Runnable method)static SimEventscheduleAt(double time, Runnable method)static SimEventscheduleAt(String description, double time, int prio, Runnable action)static SimEventscheduleAt(String description, double time, Runnable action)static SimEventscheduleAt(String description, Instant time, int prio, Runnable method)static SimEventscheduleAt(String description, Instant time, Runnable method)static SimEventscheduleAt(Instant time, int prio, Runnable method)static SimEventscheduleAt(Instant time, Runnable method)static SimEventscheduleIn(double time, int prio, Runnable method)static SimEventscheduleIn(double time, Runnable method)static SimEventscheduleIn(long numUnits, TemporalUnit unit, int prio, Runnable method)static SimEventscheduleIn(long numUnits, TemporalUnit unit, Runnable method)static SimEventscheduleIn(String description, double time, int prio, Runnable method)static SimEventscheduleIn(String description, double time, Runnable method)static SimEventscheduleIn(String description, long numUnits, TemporalUnit unit, int prio, Runnable method)static SimEventscheduleIn(String description, long numUnits, TemporalUnit unit, Runnable method)static SimEventscheduleIn(String description, Duration duration, int prio, Runnable method)static SimEventscheduleIn(String description, Duration duration, Runnable method)static SimEventscheduleIn(Duration duration, int prio, Runnable method)static SimEventscheduleIn(Duration duration, Runnable method)static doublesimTime()static Map<String,Object>simulationOf(SimComponent... components)static Map<String,Object>simulationOf(SimProcessUtil.SimAction a)static Map<String,Object>simulationOf(SimProcessUtil.SimRunnable r)static Map<String,Object>simulationOf(String name, SimComponent... components)static Map<String,Object>simulationOf(String name, SimProcessUtil.SimAction a)Create a new simulation and immediately executes it.static Map<String,Object>simulationOf(String name, SimProcessUtil.SimRunnable r)static voidsuspend()static doubletoSimTime(long amount, TemporalUnit u)static doubletoSimTime(Duration d)static voidtrace(Object... params)static booleanwaitCondition(ObservableValue<Boolean> triggerCondition)static <T1,T2>
booleanwaitCondition(BiFunction<T1,T2,Boolean> triggerCondition, ObservableValue<? extends T1> obs1, ObservableValue<? extends T2> obs2)static <T> booleanwaitCondition(Function<T,Boolean> triggerCondition, ObservableValue<? extends T> observable)static voidwaitFor(double deltaT)static voidwaitFor(long amount, TemporalUnit u)static voidwaitFor(Duration d)static voidwaitUntil(double tAbs)static voidwaitUntil(Instant instant)
-
-
-
Method Detail
-
currentSimulation
@Nullable public static Simulation currentSimulation()
Returns the currentSimulationornullif no simulation is currently assigned to the current thread.
-
requireSimContext
public static Simulation requireSimContext()
Returns the currentSimulation. If there is no simulation, anIllegalStateExceptionis thrown.
-
currentProcess
public static SimProcess<?> currentProcess()
-
simTime
public static double simTime()
-
toSimTime
public static double toSimTime(long amount, TemporalUnit u)
-
toSimTime
public static double toSimTime(Duration d)
-
formattedMessage
public static String formattedMessage(Enum<?> key, Object... params)
Simulation#formattedMessage(Enum, Object)
-
activateEntity
public static SimProcess<Void> activateEntity(SimEntity e)
Activates the givenSimEntityand returns its lifecycle processSimulation.activateEntity(SimEntity).
-
activate
public static SimProcess<Void> activate(SimProcessUtil.SimRunnable r)
-
activate
public static SimProcess<Void> activate(String name, SimProcessUtil.SimRunnable r)
-
activate
public static SimProcess<Void> activate(SimProcessUtil.SimAction a)
-
activate
public static SimProcess<Void> activate(String name, SimProcessUtil.SimAction a)
-
activateCallable
public static <T> SimProcess<T> activateCallable(Callable<T> c)
-
activateCallable
public static <T> SimProcess<T> activateCallable(String name, Callable<T> c)
-
activateCallable
public static <T> SimProcess<T> activateCallable(SimProcessUtil.SimCallable<T> a)
-
activateCallable
public static <T> SimProcess<T> activateCallable(String name, SimProcessUtil.SimCallable<T> a)
-
trace
public static void trace(Object... params)
- See Also:
Simulation.trace(Object...)
-
end
public static void end()
- See Also:
Simulation.end()
-
addResult
public static void addResult(String name, Object value)
- See Also:
Simulation.addResult(String, Object)
-
waitFor
public static void waitFor(double deltaT) throws SimProcess.MightBlock- Throws:
SimProcess.MightBlock
-
waitFor
public static void waitFor(long amount, TemporalUnit u) throws SimProcess.MightBlock- Throws:
SimProcess.MightBlock
-
waitFor
public static void waitFor(Duration d) throws SimProcess.MightBlock
- Throws:
SimProcess.MightBlock
-
waitUntil
public static void waitUntil(double tAbs) throws SimProcess.MightBlock- Throws:
SimProcess.MightBlock
-
waitUntil
public static void waitUntil(Instant instant) throws SimProcess.MightBlock
- Throws:
SimProcess.MightBlock
-
waitCondition
public static boolean waitCondition(ObservableValue<Boolean> triggerCondition) throws SimProcess.MightBlock
- Throws:
SimProcess.MightBlock- See Also:
SimProcess.waitCondition(ObservableValue)
-
waitCondition
public static <T> boolean waitCondition(Function<T,Boolean> triggerCondition, ObservableValue<? extends T> observable) throws SimProcess.MightBlock
- Throws:
SimProcess.MightBlock- See Also:
SimProcess.waitCondition(Function, ObservableValue)
-
waitCondition
public static <T1,T2> boolean waitCondition(BiFunction<T1,T2,Boolean> triggerCondition, ObservableValue<? extends T1> obs1, ObservableValue<? extends T2> obs2) throws SimProcess.MightBlock
-
suspend
public static void suspend() throws SimProcess.MightBlock- Throws:
SimProcess.MightBlock- See Also:
SimProcess.suspend()
-
schedule
public static SimEvent schedule(SimEvent event)
- See Also:
Simulation.schedule(SimEvent)
-
scheduleAt
public static SimEvent scheduleAt(String description, double time, int prio, Runnable action)
-
scheduleAt
public static SimEvent scheduleAt(String description, Instant time, int prio, Runnable method)
-
scheduleIn
public static SimEvent scheduleIn(String description, double time, int prio, Runnable method)
-
scheduleIn
public static SimEvent scheduleIn(String description, Duration duration, int prio, Runnable method)
-
scheduleIn
public static SimEvent scheduleIn(String description, Duration duration, Runnable method)
-
scheduleIn
public static SimEvent scheduleIn(long numUnits, TemporalUnit unit, int prio, Runnable method)
-
scheduleIn
public static SimEvent scheduleIn(long numUnits, TemporalUnit unit, Runnable method)
-
scheduleIn
public static SimEvent scheduleIn(String description, long numUnits, TemporalUnit unit, int prio, Runnable method)
-
scheduleIn
public static SimEvent scheduleIn(String description, long numUnits, TemporalUnit unit, Runnable method)
-
initRndGen
public static <T extends DblSequence> T initRndGen(T s, String streamName)
-
simulationOf
public static Map<String,Object> simulationOf(SimProcessUtil.SimRunnable r)
- See Also:
simulationOf(String, SimAction)
-
simulationOf
public static Map<String,Object> simulationOf(@Nullable String name, SimProcessUtil.SimRunnable r)
- See Also:
simulationOf(String, SimAction)
-
simulationOf
public static Map<String,Object> simulationOf(SimComponent... components)
- See Also:
simulationOf(String, SimAction)
-
simulationOf
public static Map<String,Object> simulationOf(@Nullable String name, SimComponent... components)
- See Also:
simulationOf(String, SimAction)
-
simulationOf
public static Map<String,Object> simulationOf(SimProcessUtil.SimAction a)
- See Also:
simulationOf(String, SimAction)
-
simulationOf
public static Map<String,Object> simulationOf(@Nullable String name, SimProcessUtil.SimAction a)
Create a new simulation and immediately executes it. This method only returns when the simulation is finished.- Parameters:
name- The simulation's name (can be null)a-SimProcessUtil.SimActiondefining the simulation's behavior.- Returns:
- The new simulation's result map.
- See Also:
Simulation.performRun(),async(String, SimAction),createSim(String, SimAction)
-
async
public static Future<Map<String,Object>> async(SimProcessUtil.SimRunnable r)
- See Also:
async(String, SimAction)
-
async
public static Future<Map<String,Object>> async(@Nullable String name, SimProcessUtil.SimRunnable r)
- See Also:
async(String, SimAction)
-
async
public static Future<Map<String,Object>> async(SimProcessUtil.SimAction a)
- See Also:
async(String, SimAction)
-
async
public static Future<Map<String,Object>> async(@Nullable String name, SimProcessUtil.SimAction a)
Create a new simulation and run it asynchronously in a background thread.- Parameters:
name- The simulation's name (can be null)a-SimProcessUtil.SimActiondefining the simulation's behavior.- Returns:
- A
Futureto the simulation's result map. - See Also:
Simulation.performRunAsync()
-
createSim
public static Simulation createSim(@Nullable String name, SimProcessUtil.SimAction a)
Create a new simulation, but does not yet execute it.- Parameters:
name- The simulation's name (can be null)a-SimProcessUtil.SimActiondefining the simulation's behavior.- Returns:
- The new simulation.
-
-