From 7e87f2964595ee3cfab84db84c3c7efb66a89d15 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Wed, 24 Apr 2019 15:24:34 +0200 Subject: 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. --- .../main/kotlin/com/atlarge/odcsim/engine/omega/OmegaActorSystem.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'odcsim-engine-omega/src') 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(root: Behavior, override val name: String) override val time: Instant get() = this@OmegaActorSystem.time + override fun send(ref: ActorRef, msg: U, after: Duration) = schedule(ref, msg, after) + override fun spawn(behavior: Behavior, name: String): ActorRef { val ref = ActorRefImpl(self.path.child(name)) if (ref.path !in registry) { @@ -220,9 +222,7 @@ class OmegaActorSystem(root: Behavior, override val name: String) override fun hashCode(): Int = self.path.hashCode() } - private inner class ActorRefImpl(override val path: ActorPath) : ActorRef { - override fun send(msg: T, after: Duration) = schedule(this, msg, after) - } + private inner class ActorRefImpl(override val path: ActorPath) : ActorRef /** * A wrapper around a message that has been scheduled for processing. -- cgit v1.2.3