Non-suspend data tree builder
This commit is contained in:
parent
9c55d26be5
commit
196854429a
@ -1,9 +1,18 @@
|
||||
package space.kscience.dataforge.data
|
||||
|
||||
import kotlinx.coroutines.coroutineScope
|
||||
import kotlinx.coroutines.flow.collect
|
||||
import space.kscience.dataforge.misc.DFExperimental
|
||||
import space.kscience.dataforge.names.*
|
||||
import space.kscience.dataforge.names.Name
|
||||
import space.kscience.dataforge.names.NameToken
|
||||
import space.kscience.dataforge.names.asName
|
||||
import space.kscience.dataforge.names.cutFirst
|
||||
import space.kscience.dataforge.names.cutLast
|
||||
import space.kscience.dataforge.names.firstOrNull
|
||||
import space.kscience.dataforge.names.isEmpty
|
||||
import space.kscience.dataforge.names.lastOrNull
|
||||
import space.kscience.dataforge.names.length
|
||||
import space.kscience.dataforge.names.plus
|
||||
import kotlin.collections.set
|
||||
import kotlin.reflect.KType
|
||||
import kotlin.reflect.typeOf
|
||||
|
||||
@ -61,6 +70,12 @@ internal class StaticDataTree<T : Any>(
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("FunctionName")
|
||||
public fun <T : Any> DataTree(dataType: KType): DataTree<T> = StaticDataTree(dataType)
|
||||
|
||||
@Suppress("FunctionName")
|
||||
public inline fun <reified T : Any> DataTree(): DataTree<T> = DataTree(typeOf<T>())
|
||||
|
||||
@Suppress("FunctionName")
|
||||
public suspend fun <T : Any> DataTree(
|
||||
dataType: KType,
|
||||
@ -73,6 +88,6 @@ public suspend inline fun <reified T : Any> DataTree(
|
||||
): DataTree<T> = DataTree(typeOf<T>(), block)
|
||||
|
||||
@OptIn(DFExperimental::class)
|
||||
public suspend fun <T : Any> DataSet<T>.seal(): DataTree<T> = DataTree(dataType){
|
||||
public suspend fun <T : Any> DataSet<T>.seal(): DataTree<T> = DataTree(dataType) {
|
||||
populate(this@seal)
|
||||
}
|
@ -1,12 +1,10 @@
|
||||
package space.kscience.dataforge.distributed
|
||||
|
||||
import io.ktor.utils.io.core.*
|
||||
import io.lambdarpc.coding.coders.JsonCoder
|
||||
import io.lambdarpc.dsl.LibService
|
||||
import io.lambdarpc.dsl.def
|
||||
import io.lambdarpc.dsl.j
|
||||
import io.lambdarpc.utils.ServiceId
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.serialization.KSerializer
|
||||
import space.kscience.dataforge.context.Context
|
||||
import space.kscience.dataforge.context.Global
|
||||
@ -32,7 +30,7 @@ public class ServiceWorkspace(
|
||||
port: Int? = null,
|
||||
override val context: Context = Global.buildContext("workspace".asName()),
|
||||
private val dataSerializer: KSerializer<Any>? = null,
|
||||
data: DataSet<*> = runBlocking { DataTree<Any> {} },
|
||||
data: DataSet<*> = DataTree<Any>(),
|
||||
override val targets: Map<String, Meta> = mapOf(),
|
||||
) : Workspace, Closeable {
|
||||
private val _port: Int? = port
|
||||
@ -113,9 +111,6 @@ public class ServiceWorkspace(
|
||||
|
||||
public companion object {
|
||||
internal val serviceId = ServiceId("d41b95b1-828b-4444-8ff0-6f9c92a79246")
|
||||
internal val execute by serviceId.def(
|
||||
JsonCoder(Name.serializer()), JsonCoder(MetaSerializer), j<TaskRegistry>(),
|
||||
j<DataSetPrototype>()
|
||||
)
|
||||
internal val execute by serviceId.def(j<Name>(), j(MetaSerializer), j<TaskRegistry>(), j<DataSetPrototype>())
|
||||
}
|
||||
}
|
||||
|
@ -24,15 +24,13 @@ internal class RemoteCallTest {
|
||||
private lateinit var workspace: Workspace
|
||||
|
||||
@BeforeAll
|
||||
fun before() {
|
||||
fun before() = runBlocking {
|
||||
worker1 = ServiceWorkspace(
|
||||
context = Global.buildContext("worker1".asName()) {
|
||||
plugin(MyPlugin1)
|
||||
},
|
||||
data = runBlocking {
|
||||
DataTree<Any> {
|
||||
data = DataTree<Any> {
|
||||
static("int", 42)
|
||||
}
|
||||
},
|
||||
)
|
||||
worker1.start()
|
||||
|
Loading…
Reference in New Issue
Block a user