@@ -13,17 +13,22 @@ import kotlinx.rpc.krpc.KrpcTransport
1313import kotlinx.rpc.krpc.KrpcTransportMessage
1414import kotlin.coroutines.CoroutineContext
1515
16- class LocalTransport (parentScope : CoroutineScope ? = null ) : CoroutineScope {
16+ class LocalTransport (
17+ parentScope : CoroutineScope ? = null ,
18+ transportContext : CoroutineContext ? = null ,
19+ ) : CoroutineScope {
1720 override val coroutineContext = parentScope
18- ?.run { coroutineContext + SupervisorJob (coroutineContext.job) }
21+ ?.run { SupervisorJob (coroutineContext.job) }
1922 ? : SupervisorJob ()
2023
2124 private val clientIncoming = Channel <KrpcTransportMessage >()
2225 private val serverIncoming = Channel <KrpcTransportMessage >()
2326
2427 val client: KrpcTransport = object : KrpcTransport {
25- override val coroutineContext: CoroutineContext = this @LocalTransport.coroutineContext +
26- Job (this @LocalTransport.coroutineContext.job)
28+ override val coroutineContext: CoroutineContext = Job (this @LocalTransport.coroutineContext.job).let {
29+ if (transportContext != null ) transportContext + it
30+ else it
31+ }
2732
2833 override suspend fun send (message : KrpcTransportMessage ) {
2934 serverIncoming.send(message)
@@ -35,8 +40,10 @@ class LocalTransport(parentScope: CoroutineScope? = null) : CoroutineScope {
3540 }
3641
3742 val server: KrpcTransport = object : KrpcTransport {
38- override val coroutineContext: CoroutineContext = this @LocalTransport.coroutineContext +
39- Job (this @LocalTransport.coroutineContext.job)
43+ override val coroutineContext: CoroutineContext = Job (this @LocalTransport.coroutineContext.job).let {
44+ if (transportContext != null ) transportContext + it
45+ else it
46+ }
4047
4148 override suspend fun send (message : KrpcTransportMessage ) {
4249 clientIncoming.send(message)
0 commit comments