diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2019-04-24 15:24:34 +0200 |
|---|---|---|
| committer | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2019-05-13 20:26:46 +0200 |
| commit | 7e87f2964595ee3cfab84db84c3c7efb66a89d15 (patch) | |
| tree | 5b1b5cd7afe321784c34e0032b2f0d9f40349f48 /odcsim-engine-omega | |
| parent | f0a8f3906d6f4d94900117b4d9f0bd9e58f33e10 (diff) | |
refactor: Require ActorContext for sending messages
This change makes it mandatory to send messages to an actor via the
sender's ActorContext in order for the engine to maintain consistency
in time between actors.
Diffstat (limited to 'odcsim-engine-omega')
| -rw-r--r-- | odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/OmegaActorSystem.kt | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/OmegaActorSystem.kt b/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/OmegaActorSystem.kt index f6667d39..5a886a6d 100644 --- a/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/OmegaActorSystem.kt +++ b/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/OmegaActorSystem.kt @@ -143,6 +143,8 @@ class OmegaActorSystem<in T : Any>(root: Behavior<T>, override val name: String) override val time: Instant get() = this@OmegaActorSystem.time + override fun <U : Any> send(ref: ActorRef<U>, msg: U, after: Duration) = schedule(ref, msg, after) + override fun <U : Any> spawn(behavior: Behavior<U>, name: String): ActorRef<U> { val ref = ActorRefImpl<U>(self.path.child(name)) if (ref.path !in registry) { @@ -220,9 +222,7 @@ class OmegaActorSystem<in T : Any>(root: Behavior<T>, override val name: String) override fun hashCode(): Int = self.path.hashCode() } - private inner class ActorRefImpl<T : Any>(override val path: ActorPath) : ActorRef<T> { - override fun send(msg: T, after: Duration) = schedule(this, msg, after) - } + private inner class ActorRefImpl<T : Any>(override val path: ActorPath) : ActorRef<T> /** * A wrapper around a message that has been scheduled for processing. |
