updated API
This commit is contained in:
parent
96b5bcf905
commit
062b8a76ae
@ -82,7 +82,7 @@ internal class ServerHandshake<CONNECTION : Connection>(
|
|||||||
// note: CANNOT be called in action dispatch. ALWAYS ON SAME THREAD. ONLY RESPONSES ARE ON ACTION DISPATCH!
|
// note: CANNOT be called in action dispatch. ALWAYS ON SAME THREAD. ONLY RESPONSES ARE ON ACTION DISPATCH!
|
||||||
private fun validateMessageTypeAndDoPending(
|
private fun validateMessageTypeAndDoPending(
|
||||||
server: Server<CONNECTION>,
|
server: Server<CONNECTION>,
|
||||||
eventDispatch: CoroutineScope,
|
eventDispatch: EventDispatcher,
|
||||||
handshakePublication: Publication,
|
handshakePublication: Publication,
|
||||||
message: HandshakeMessage,
|
message: HandshakeMessage,
|
||||||
logger: KLogger
|
logger: KLogger
|
||||||
|
@ -20,8 +20,8 @@
|
|||||||
package dorkbox.network.ping
|
package dorkbox.network.ping
|
||||||
|
|
||||||
import dorkbox.network.connection.Connection
|
import dorkbox.network.connection.Connection
|
||||||
|
import dorkbox.network.connection.EventDispatcher
|
||||||
import dorkbox.network.rmi.ResponseManager
|
import dorkbox.network.rmi.ResponseManager
|
||||||
import kotlinx.coroutines.CoroutineScope
|
|
||||||
import mu.KLogger
|
import mu.KLogger
|
||||||
import java.util.concurrent.*
|
import java.util.concurrent.*
|
||||||
|
|
||||||
@ -61,7 +61,7 @@ internal class PingManager<CONNECTION : Connection> {
|
|||||||
internal suspend fun ping(
|
internal suspend fun ping(
|
||||||
connection: Connection,
|
connection: Connection,
|
||||||
pingTimeoutSeconds: Int,
|
pingTimeoutSeconds: Int,
|
||||||
eventDispatch: CoroutineScope,
|
eventDispatch: EventDispatcher,
|
||||||
responseManager: ResponseManager,
|
responseManager: ResponseManager,
|
||||||
logger: KLogger,
|
logger: KLogger,
|
||||||
function: suspend Ping.() -> Unit
|
function: suspend Ping.() -> Unit
|
||||||
|
@ -16,12 +16,11 @@
|
|||||||
package dorkbox.network.rmi
|
package dorkbox.network.rmi
|
||||||
|
|
||||||
import dorkbox.network.connection.Connection
|
import dorkbox.network.connection.Connection
|
||||||
|
import dorkbox.network.connection.EventDispatcher
|
||||||
import kotlinx.atomicfu.atomic
|
import kotlinx.atomicfu.atomic
|
||||||
import kotlinx.coroutines.CoroutineScope
|
|
||||||
import kotlinx.coroutines.channels.Channel
|
import kotlinx.coroutines.channels.Channel
|
||||||
import kotlinx.coroutines.channels.ClosedSendChannelException
|
import kotlinx.coroutines.channels.ClosedSendChannelException
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.launch
|
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import mu.KLogger
|
import mu.KLogger
|
||||||
import mu.KotlinLogging
|
import mu.KotlinLogging
|
||||||
@ -184,7 +183,7 @@ internal class ResponseManager(maxValuesInCache: Int = 65535, minimumValue: Int
|
|||||||
/**
|
/**
|
||||||
* Cancels the RMI request in the given timeout, the callback is executed inside the read lock
|
* Cancels the RMI request in the given timeout, the callback is executed inside the read lock
|
||||||
*/
|
*/
|
||||||
fun cancelRequest(eventDispatch: CoroutineScope, timeoutMillis: Long, id: Int, logger: KLogger, onCancelled: ResponseWaiter.() -> Unit) {
|
fun cancelRequest(eventDispatch: EventDispatcher, timeoutMillis: Long, id: Int, logger: KLogger, onCancelled: ResponseWaiter.() -> Unit) {
|
||||||
eventDispatch.launch {
|
eventDispatch.launch {
|
||||||
delay(timeoutMillis) // this will always wait. if this job is cancelled, this will immediately stop waiting
|
delay(timeoutMillis) // this will always wait. if this job is cancelled, this will immediately stop waiting
|
||||||
|
|
||||||
@ -209,7 +208,7 @@ internal class ResponseManager(maxValuesInCache: Int = 65535, minimumValue: Int
|
|||||||
* @return the result (can be null) or timeout exception
|
* @return the result (can be null) or timeout exception
|
||||||
*/
|
*/
|
||||||
suspend fun waitForReply(
|
suspend fun waitForReply(
|
||||||
eventDispatch: CoroutineScope,
|
eventDispatch: EventDispatcher,
|
||||||
responseWaiter: ResponseWaiter,
|
responseWaiter: ResponseWaiter,
|
||||||
timeoutMillis: Long,
|
timeoutMillis: Long,
|
||||||
logger: KLogger,
|
logger: KLogger,
|
||||||
|
@ -17,8 +17,8 @@ package dorkbox.network.rmi
|
|||||||
|
|
||||||
import dorkbox.network.connection.Connection
|
import dorkbox.network.connection.Connection
|
||||||
import dorkbox.network.connection.EndPoint
|
import dorkbox.network.connection.EndPoint
|
||||||
|
import dorkbox.network.connection.EventDispatcher
|
||||||
import dorkbox.network.rmi.messages.MethodRequest
|
import dorkbox.network.rmi.messages.MethodRequest
|
||||||
import kotlinx.coroutines.CoroutineScope
|
|
||||||
import kotlinx.coroutines.asContextElement
|
import kotlinx.coroutines.asContextElement
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
@ -181,7 +181,7 @@ internal class RmiClient(val isGlobal: Boolean,
|
|||||||
@Volatile private var enableEquals = false
|
@Volatile private var enableEquals = false
|
||||||
|
|
||||||
// if we are ASYNC, then this method immediately returns
|
// if we are ASYNC, then this method immediately returns
|
||||||
private suspend fun sendRequest(isAsync: Boolean, eventDispatch: CoroutineScope, invokeMethod: MethodRequest, logger: KLogger): Any? {
|
private suspend fun sendRequest(isAsync: Boolean, eventDispatch: EventDispatcher, invokeMethod: MethodRequest, logger: KLogger): Any? {
|
||||||
// there is a STRANGE problem, where if we DO NOT respond/reply to method invocation, and immediate invoke multiple methods --
|
// there is a STRANGE problem, where if we DO NOT respond/reply to method invocation, and immediate invoke multiple methods --
|
||||||
// the "server" side can have out-of-order method invocation. There are 2 ways to solve this
|
// the "server" side can have out-of-order method invocation. There are 2 ways to solve this
|
||||||
// 1) make the "server" side single threaded
|
// 1) make the "server" side single threaded
|
||||||
|
Loading…
Reference in New Issue
Block a user