From 675b94e909132a0aaf2c389cef8024d6f8c9d357 Mon Sep 17 00:00:00 2001 From: Ahmed Zamil Date: Tue, 9 Jul 2024 19:17:09 +0300 Subject: [PATCH] unnecessary deattach --- lib/src/Net/IIP/DistributedConnection.dart | 29 ++++++++++++++++------ 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/lib/src/Net/IIP/DistributedConnection.dart b/lib/src/Net/IIP/DistributedConnection.dart index ab01220..d0aae9e 100644 --- a/lib/src/Net/IIP/DistributedConnection.dart +++ b/lib/src/Net/IIP/DistributedConnection.dart @@ -1727,15 +1727,25 @@ class DistributedConnection extends NetworkConnection with IStore { AsyncReply? sendDetachRequest(int instanceId) { try { - if (_attachedResources.containsKey(instanceId)) + var sendDetach = false; + + if (_attachedResources.containsKey(instanceId)){ _attachedResources.remove(instanceId); + sendDetach = true; + } - if (_suspendedResources.containsKey(instanceId)) + if (_suspendedResources.containsKey(instanceId)){ _suspendedResources.remove(instanceId); + sendDetach = true; + } + + if (sendDetach) + return (_sendRequest(IIPPacketAction.DetachResource) + ..addUint32(instanceId)) + .done(); + + return null; - return (_sendRequest(IIPPacketAction.DetachResource) - ..addUint32(instanceId)) - .done(); } catch (ex) { return null; } @@ -1815,10 +1825,16 @@ class DistributedConnection extends NetworkConnection with IStore { } } - void iipEventResourceReassigned(int resourceId, int newResourceId) {} + void iipEventResourceReassigned(int resourceId, int newResourceId) { + + } void iipEventResourceDestroyed(int resourceId) { var r = _attachedResources[resourceId]?.target; + + // remove from attached to avoid sending unnecessary deattach request when Destroy() is called + _attachedResources.remove(resourceId); + if (r != null) { r.destroy(); return; @@ -1827,7 +1843,6 @@ class DistributedConnection extends NetworkConnection with IStore { _neededResources.remove(resourceId); } - _attachedResources.remove(resourceId); } // @TODO: Check for deadlocks