From a6ae9aa30fac7025b00ca675d2c6883ba33e4a2b Mon Sep 17 00:00:00 2001 From: norangebit Date: Fri, 20 Mar 2020 11:32:34 +0100 Subject: [PATCH] fix drill-01 exercise-4 The server executes the factorial asynchronously --- build.gradle.kts | 1 + src/main/kotlin/drills/drill01/exercise4/Client.kt | 3 +++ src/main/kotlin/drills/drill01/exercise4/Math.kt | 6 +++++- src/main/kotlin/drills/drill01/exercise4/Server.kt | 3 +-- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 35e0c74..6e30e28 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -19,6 +19,7 @@ group = "it.norangeb.unisannio" dependencies { implementation(kotlin("stdlib-jdk8")) + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.5") testCompile("junit", "junit", "4.12") detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:1.7.0-beta2") } diff --git a/src/main/kotlin/drills/drill01/exercise4/Client.kt b/src/main/kotlin/drills/drill01/exercise4/Client.kt index c8a674a..09d90a2 100644 --- a/src/main/kotlin/drills/drill01/exercise4/Client.kt +++ b/src/main/kotlin/drills/drill01/exercise4/Client.kt @@ -20,4 +20,7 @@ val clientHandler = { sps.print("The factorial of $n is $fact") math.getFactOf(n, aps) + + for (i in 0 until 500) + println("other work...") } diff --git a/src/main/kotlin/drills/drill01/exercise4/Math.kt b/src/main/kotlin/drills/drill01/exercise4/Math.kt index 935e076..d28e315 100644 --- a/src/main/kotlin/drills/drill01/exercise4/Math.kt +++ b/src/main/kotlin/drills/drill01/exercise4/Math.kt @@ -1,6 +1,8 @@ package drills.drill01.exercise4 import drills.drill01.exercise2.PrintService +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch import java.rmi.Remote import java.rmi.RemoteException import java.rmi.server.UnicastRemoteObject @@ -17,7 +19,9 @@ class MathImpl : Math, UnicastRemoteObject() { override fun getFactOf(n: Int): Long = fact(n) override fun getFactOf(n: Int, ps: PrintService) { - ps.print("The factorial of $n is ${fact(n)}") + GlobalScope.launch { + ps.print("The factorial of $n is ${fact(n)}") + } } private fun fact(n: Int): Long { diff --git a/src/main/kotlin/drills/drill01/exercise4/Server.kt b/src/main/kotlin/drills/drill01/exercise4/Server.kt index 19493ab..7e71b96 100644 --- a/src/main/kotlin/drills/drill01/exercise4/Server.kt +++ b/src/main/kotlin/drills/drill01/exercise4/Server.kt @@ -4,8 +4,7 @@ import util.rmi.Server fun main() { Server { - val math: Math = - MathImpl() + val math: Math = MathImpl() Server.bind(math, "math") }.start() }