Compare commits

..

2 Commits

Author SHA1 Message Date
4e24213428
minor refactoring 2022-11-17 21:17:27 +03:00
3890689f5c
minor refactoring 2022-11-17 21:13:51 +03:00
4 changed files with 15 additions and 14 deletions

View File

@ -9,7 +9,6 @@ group = "center.sciprog"
version = "1.0-SNAPSHOT"
repositories {
jcenter()
mavenCentral()
maven("https://maven.pkg.jetbrains.space/public/p/kotlinx-html/maven")
}
@ -67,11 +66,12 @@ kotlin {
}
application {
mainClass.set("center.sciprog.application.ServerKt")
mainClass.set("fullstack.kotlin.demo.ServerKt")
}
tasks.named<Copy>("jvmProcessResources") {
val jsBrowserDistribution = tasks.named("jsBrowserDistribution")
include("*.js")
from(jsBrowserDistribution)
}

View File

@ -1,13 +1,15 @@
package fullstack.kotlin.demo
import kotlinx.serialization.Serializable
@Serializable
sealed interface ControlEvent
@Serializable
data class IntControlEvent(val value: Int) : ControlEvent
data class CounterControlEvent(val value: Int) : ControlEvent
@Serializable
sealed interface DataEvent
@Serializable
data class IntDataEvent(val value: Int) : DataEvent
data class CounterDataEvent(val value: Int) : DataEvent

View File

@ -1,3 +1,5 @@
package fullstack.kotlin.demo
import androidx.compose.runtime.*
import io.ktor.client.engine.js.Js
import io.rsocket.kotlin.RSocket
@ -50,14 +52,14 @@ suspend fun main() {
fun setCount(value: Int) {
count = value
scope.launch {
sendEvent(IntControlEvent(value))
sendEvent(CounterControlEvent(value))
}
}
LaunchedEffect(Unit){
dataFlow.onEach { event ->
println("Received $event")
if (event is IntDataEvent) {
if (event is CounterDataEvent) {
count = event.value
}
}.launchIn(scope)

View File

@ -1,9 +1,5 @@
package center.sciprog.application
package fullstack.kotlin.demo
import ControlEvent
import DataEvent
import IntControlEvent
import IntDataEvent
import io.ktor.http.HttpStatusCode
import io.ktor.server.application.call
import io.ktor.server.application.install
@ -54,9 +50,9 @@ fun main() {
controlFlow.onEach { event ->
println("Received $event")
if (event is IntControlEvent) {
if (event is CounterControlEvent) {
counterState = event.value
dataFlow.emit(IntDataEvent(event.value))
dataFlow.emit(CounterDataEvent(event.value))
}
}.launchIn(this)
@ -78,7 +74,8 @@ fun main() {
}
//handler for request/stream
requestStream { _: Payload ->
merge(flowOf(IntDataEvent(counterState)), dataFlow).map { event ->
merge(flowOf(CounterDataEvent(counterState)), dataFlow).map { event ->
println("Sent $event")
buildPayload {
data(Json.encodeToString<DataEvent>(event))
}