From 68d1595542182515925b575501fcfe2cd96b50ee Mon Sep 17 00:00:00 2001 From: Ahmed Zamil Date: Wed, 10 Jul 2024 18:25:09 +0300 Subject: [PATCH] unnecessary deattach --- .../Net/IIP/DistributedConnectionProtocol.cs | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/Esiur/Net/IIP/DistributedConnectionProtocol.cs b/Esiur/Net/IIP/DistributedConnectionProtocol.cs index 01b6fb2..68fc35b 100644 --- a/Esiur/Net/IIP/DistributedConnectionProtocol.cs +++ b/Esiur/Net/IIP/DistributedConnectionProtocol.cs @@ -223,15 +223,26 @@ partial class DistributedConnection { try { + var sendDetach = false; + if (attachedResources.ContainsKey(instanceId)) + { attachedResources.Remove(instanceId); + sendDetach = true; + } if (suspendedResources.ContainsKey(instanceId)) + { suspendedResources.Remove(instanceId); + sendDetach = true; + } - return SendRequest(IIPPacketAction.DetachResource) - .AddUInt32(instanceId) - .Done(); + if (sendDetach) + return SendRequest(IIPPacketAction.DetachResource) + .AddUInt32(instanceId) + .Done(); + + return null; // no one is waiting for this } catch { @@ -333,9 +344,17 @@ partial class DistributedConnection DistributedResource r; if (attachedResources[resourceId].TryGetTarget(out r)) + { + // remove from attached to avoid sending unnecessary deattach request when Destroy() is called + attachedResources.Remove(resourceId); r.Destroy(); + } + else + { + attachedResources.Remove(resourceId); + } - attachedResources.Remove(resourceId); + } else if (neededResources.Contains(resourceId)) {