From a464d4b231dfec3340f385bfc8750c3ce7120ea5 Mon Sep 17 00:00:00 2001 From: nathan Date: Tue, 25 Aug 2020 19:47:13 +0200 Subject: [PATCH] Fixed issue clearing RMI proxy objects on connection close --- src/dorkbox/network/connection/Connection.kt | 2 ++ src/dorkbox/network/rmi/RmiManagerConnections.kt | 3 +-- src/dorkbox/network/rmi/RmiManagerGlobal.kt | 3 +-- src/dorkbox/network/rmi/RmiObjectCache.kt | 4 ---- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/dorkbox/network/connection/Connection.kt b/src/dorkbox/network/connection/Connection.kt index df09bf23..d2527cdf 100644 --- a/src/dorkbox/network/connection/Connection.kt +++ b/src/dorkbox/network/connection/Connection.kt @@ -301,6 +301,8 @@ open class Connection(connectionParameters: ConnectionParams<*>) { publication.close() + rmiConnectionSupport.clearProxyObjects() + // this always has to be on a new dispatch, otherwise we can have weird logic loops if we reconnect within a disconnect callback endPoint.actionDispatch.launch { // a connection might have also registered for disconnect events diff --git a/src/dorkbox/network/rmi/RmiManagerConnections.kt b/src/dorkbox/network/rmi/RmiManagerConnections.kt index 8bb5c7e7..078de117 100644 --- a/src/dorkbox/network/rmi/RmiManagerConnections.kt +++ b/src/dorkbox/network/rmi/RmiManagerConnections.kt @@ -122,8 +122,7 @@ internal class RmiManagerConnections(logger: KLogger, connection.send(response) } - override fun close() { + fun clearProxyObjects() { proxyObjects.clear() - super.close() } } diff --git a/src/dorkbox/network/rmi/RmiManagerGlobal.kt b/src/dorkbox/network/rmi/RmiManagerGlobal.kt index bb9a60f9..0e7c2a4b 100644 --- a/src/dorkbox/network/rmi/RmiManagerGlobal.kt +++ b/src/dorkbox/network/rmi/RmiManagerGlobal.kt @@ -205,8 +205,7 @@ internal class RmiManagerGlobal(logger: KLogger, return success as T? } - override fun close() { - super.close() + fun close() { rmiResponseManager.close() remoteObjectCreationCallbacks.close() } diff --git a/src/dorkbox/network/rmi/RmiObjectCache.kt b/src/dorkbox/network/rmi/RmiObjectCache.kt index ff248dcf..681d89d6 100644 --- a/src/dorkbox/network/rmi/RmiObjectCache.kt +++ b/src/dorkbox/network/rmi/RmiObjectCache.kt @@ -43,8 +43,4 @@ internal open class RmiObjectCache(logger: KLogger) { fun removeImplObject(rmiId: Int): T? { return implObjects.remove(rmiId) as T? } - - open fun close() { - implObjects.close() - } }