summaryrefslogtreecommitdiff
path: root/odcsim-engine-omega
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2019-04-24 15:24:34 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2019-05-13 20:26:46 +0200
commit7e87f2964595ee3cfab84db84c3c7efb66a89d15 (patch)
tree5b1b5cd7afe321784c34e0032b2f0d9f40349f48 /odcsim-engine-omega
parentf0a8f3906d6f4d94900117b4d9f0bd9e58f33e10 (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.kt6
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.