public void AddOrUpdateLink(DataLink dataLink, int stamp) { try { Node source = modelService.GetNode(dataLink.Source); if (!TryGetTarget(dataLink, out Node target)) { modelService.QueueNode(new DataNode(dataLink.Target, null, dataLink.TargetType)); return; } target.Stamp = stamp; if (TryGetLink(source, target, out Link link)) { // Already added link link.Stamp = stamp; return; } link = AddLink(source, target); link.Stamp = stamp; if (!dataLink.IsAdded) { AddLinkToLines(link); } } catch (Exception e) { Log.Exception(e, $"Failed to update link {dataLink}"); throw; } }
public void QueueNode(DataNode dataNode) => modelService.QueueNode(dataNode);