The main purpose of this PR is to solve #1 and all the underlying implementation issues.
Simulation - Coordinator synchronisation
The Coordinator now has a much more explicit interaction with the simulations and waits for them to signal when they have completed all computations.
This means that Thread.sleep is no longer needed, resulting in a huge speed boost compared to the previous version and a generally more robust system.
Simulation - Coordinator interaction
It also allows (better) intermediate interaction. The SimulationActor can interact with the Coordinator arbitrarily while the latter is just waiting for the AddTasks message. This includes having a simulation that triggers other simulations.
Event Stream
This also implements an event stream so that you can monitor what the Coordinator is doing, using SubAkka.
The main purpose of this PR is to solve #1 and all the underlying implementation issues.
Simulation - Coordinator synchronisation
The
Coordinator
now has a much more explicit interaction with the simulations and waits for them to signal when they have completed all computations.This means that
Thread.sleep
is no longer needed, resulting in a huge speed boost compared to the previous version and a generally more robust system.Simulation - Coordinator interaction
It also allows (better) intermediate interaction. The
SimulationActor
can interact with theCoordinator
arbitrarily while the latter is just waiting for theAddTasks
message. This includes having a simulation that triggers other simulations.Event Stream
This also implements an event stream so that you can monitor what the
Coordinator
is doing, using SubAkka.This will form version 0.2.