From 38156d85cd72d60b8cfb1fb1fabf8aeeaf827087 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Tue, 11 Feb 2020 21:29:37 +0100 Subject: feat: Add support for process-tied logging This change adds a log property to the ProcessContext which allows the user to access a Logger instance that is tied to a particular logical process. --- odcsim/odcsim-api/build.gradle.kts | 1 + .../odcsim-api/src/main/kotlin/com/atlarge/odcsim/ProcessContext.kt | 6 ++++++ 2 files changed, 7 insertions(+) (limited to 'odcsim/odcsim-api') diff --git a/odcsim/odcsim-api/build.gradle.kts b/odcsim/odcsim-api/build.gradle.kts index 51a80d2c..c8c6c90c 100644 --- a/odcsim/odcsim-api/build.gradle.kts +++ b/odcsim/odcsim-api/build.gradle.kts @@ -31,6 +31,7 @@ plugins { dependencies { implementation(kotlin("stdlib")) + api("org.slf4j:slf4j-api:${Library.SLF4J}") api("org.jetbrains.kotlinx:kotlinx-coroutines-core:${Library.KOTLINX_COROUTINES}") testImplementation("org.junit.jupiter:junit-jupiter-api:${Library.JUNIT_JUPITER}") diff --git a/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/ProcessContext.kt b/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/ProcessContext.kt index 2a72e331..20d48ab3 100644 --- a/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/ProcessContext.kt +++ b/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/ProcessContext.kt @@ -27,6 +27,7 @@ package com.atlarge.odcsim import java.time.Clock import kotlin.coroutines.CoroutineContext import kotlin.coroutines.coroutineContext +import org.slf4j.Logger /** * Represents the execution context of a logical process in simulation. @@ -47,6 +48,11 @@ public interface ProcessContext : CoroutineContext.Element { */ public val clock: Clock + /** + * A logger instance tied to the logical process. + */ + public val log: Logger + /** * Spawn an anonymous logical process in the simulation universe with the specified [behavior]. */ -- cgit v1.2.3 From d40eae0264236be3a9d34f39a63adde8a9b47a57 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Fri, 14 Feb 2020 00:44:43 +0100 Subject: feat: Make ProcessContext a coroutine scope This change makes the ProcessContext implement the CoroutineScope in order to launch local coroutines bound to the lifecycle of the logical process. --- odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/ProcessContext.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'odcsim/odcsim-api') diff --git a/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/ProcessContext.kt b/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/ProcessContext.kt index 20d48ab3..30ef4114 100644 --- a/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/ProcessContext.kt +++ b/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/ProcessContext.kt @@ -27,12 +27,13 @@ package com.atlarge.odcsim import java.time.Clock import kotlin.coroutines.CoroutineContext import kotlin.coroutines.coroutineContext +import kotlinx.coroutines.CoroutineScope import org.slf4j.Logger /** * Represents the execution context of a logical process in simulation. */ -public interface ProcessContext : CoroutineContext.Element { +public interface ProcessContext : CoroutineContext.Element, CoroutineScope { /** * Key for [ProcessContext] instance in the coroutine context. */ -- cgit v1.2.3