public class Controller
extends java.lang.Object
The Controller organizes and executes all actions and activities during a running simulation.
A Simulation run consists of one or more Activities performed sequentially. An Activity is a "long-running" task
considered to be the driver of the simulation; typically integration with ActivityIntegrate
. The Controller
facilitates interactive simulations by optionally running Activities on a separate thread and provides an interface
to pause, resume, and submit Actions which can modify the simulation in a thread-safe manner. For non-interactive
simulation runs, the same Activities can be executed on the current thread with runActivityBlocking
.
Modifier and Type | Class | Description |
---|---|---|
static class |
Controller.ActivityHandle<A extends Activity> |
|
static class |
Controller.ControllerHandle |
Constructor | Description |
---|---|
Controller() |
Modifier and Type | Method | Description |
---|---|---|
java.util.concurrent.CompletableFuture<java.lang.Void> |
addActionSequential(IAction action) |
|
<A extends Activity> |
addActivity(A activity) |
Adds an Activity to be executed by the Controller on a separate thread.
|
Controller.ActivityHandle<ActivityIntegrate> |
addActivity(ActivityIntegrate activity,
long maxSteps) |
|
Controller.ActivityHandle<ActivityIntegrate> |
addActivity(ActivityIntegrate activity,
long maxSteps,
double sleepPeriodMillis) |
|
void |
completeActivities() |
|
Integrator |
getIntegrator() |
|
double |
getSleepPeriod() |
|
void |
halt() |
|
boolean |
isPaused() |
|
boolean |
isRunningActivityStep() |
|
java.util.concurrent.CompletableFuture<java.lang.Void> |
pause() |
|
java.util.concurrent.CompletableFuture<java.lang.Void> |
restartCurrentActivity() |
|
void |
runActivityBlocking(Activity activity) |
Runs an activity to completion on the current thread.
|
void |
setSleepPeriod(double sleepPeriodMillis) |
|
void |
start() |
|
java.util.concurrent.CompletableFuture<java.lang.Void> |
submitActionInterrupt(IAction action) |
Submit an Action which will be executed on the Activity thread before its next step.
|
java.util.concurrent.CompletableFuture<java.lang.Void> |
toggle() |
|
java.util.concurrent.CompletableFuture<java.lang.Void> |
unpause() |
public Controller.ActivityHandle<ActivityIntegrate> addActivity(ActivityIntegrate activity, long maxSteps)
public Controller.ActivityHandle<ActivityIntegrate> addActivity(ActivityIntegrate activity, long maxSteps, double sleepPeriodMillis)
public <A extends Activity> Controller.ActivityHandle<A> addActivity(A activity)
start
method has been called. The returned ActivityHandle
contains a `CompletableFuture` which will be completed when the activity finishes.activity
- public void runActivityBlocking(Activity activity)
activity
- public Integrator getIntegrator()
public void start()
public java.util.concurrent.CompletableFuture<java.lang.Void> pause()
public java.util.concurrent.CompletableFuture<java.lang.Void> unpause()
public java.util.concurrent.CompletableFuture<java.lang.Void> toggle()
public void halt()
public java.util.concurrent.CompletableFuture<java.lang.Void> restartCurrentActivity()
public void completeActivities()
public boolean isPaused()
public boolean isRunningActivityStep()
public java.util.concurrent.CompletableFuture<java.lang.Void> submitActionInterrupt(IAction action)
action
- public java.util.concurrent.CompletableFuture<java.lang.Void> addActionSequential(IAction action)
public double getSleepPeriod()
public void setSleepPeriod(double sleepPeriodMillis)