private void CheckCompleted(Protocol protocol) { if (!protocol.IsCompleted) { return; } RegisteredProtocols.Remove(protocol.ProtocolId); protocol.Teardown(); if (!ParentProtocols.ContainsKey(protocol.ProtocolId)) { return; } Protocol parent = RegisteredProtocols[ParentProtocols[protocol.ProtocolId]]; ParentProtocols.Remove(protocol.ProtocolId); if (!ChildProtocolCompletedMsg.ContainsKey(parent.ProtocolId)) { ChildProtocolCompletedMsg[parent.ProtocolId] = new SortedDictionary <ulong, object>(); } ChildProtocolOutstandingCount[parent.ProtocolId]--; ChildProtocolCompletedMsg[parent.ProtocolId][protocol.ProtocolId] = protocol.RawResult; if (ChildProtocolOutstandingCount[parent.ProtocolId] > 0) { return; } // all subprotocols are completed //Send(parent, Id, new SubProtocolCompletedMsg(ChildProtocolCompletedMsgs[parent.ProtocolId])); NetSimulator.Loopback(Id, parent.ProtocolId, new SubProtocolCompletedMsg(ChildProtocolCompletedMsg[parent.ProtocolId], ChildProtocolSubmissionOrder[parent.ProtocolId])); ChildProtocolCompletedMsg.Remove(parent.ProtocolId); ChildProtocolSubmissionOrder.Remove(parent.ProtocolId); }
private void CheckCompleted(Protocol protocol) { if (!protocol.IsCompleted) return; RegisteredProtocols.Remove(protocol.ProtocolId); protocol.Teardown(); if (!ParentProtocols.ContainsKey(protocol.ProtocolId)) return; Protocol parent = RegisteredProtocols[ParentProtocols[protocol.ProtocolId]]; ParentProtocols.Remove(protocol.ProtocolId); if (!ChildProtocolCompletedMsg.ContainsKey(parent.ProtocolId)) ChildProtocolCompletedMsg[parent.ProtocolId] = new SortedDictionary<ulong, object>(); ChildProtocolOutstandingCount[parent.ProtocolId]--; ChildProtocolCompletedMsg[parent.ProtocolId][protocol.ProtocolId] = protocol.RawResult; if (ChildProtocolOutstandingCount[parent.ProtocolId] > 0) return; // all subprotocols are completed //Send(parent, Id, new SubProtocolCompletedMsg(ChildProtocolCompletedMsgs[parent.ProtocolId])); NetSimulator.Loopback(Id, parent.ProtocolId, new SubProtocolCompletedMsg(ChildProtocolCompletedMsg[parent.ProtocolId], ChildProtocolSubmissionOrder[parent.ProtocolId])); ChildProtocolCompletedMsg.Remove(parent.ProtocolId); ChildProtocolSubmissionOrder.Remove(parent.ProtocolId); }