public void CreateFromFibTable(FibTable table) { Root = new FibTreeNode(null); Labels.Clear(); foreach (FibEntry entry in table) { FibTreeNode node = Root; for (int i = 0; i < entry.BinaryForm.Length; i++) { int edgeLabel = entry.BinaryForm[i] - (int)'0'; if (node.GetChild(edgeLabel) == null) { node.AddChild(edgeLabel); } node = node.GetChild(edgeLabel); } FibTreeLabel label = Labels.GetLabelByNextHop(entry.NextHop); if (label == null) { label = Labels.AddLabelForNextHop(entry.NextHop); } node.Label = label; } TreeChanged?.Invoke(); }
internal void InvokeTreeChanged() { if (TreeChanged != null) { TreeChanged.Invoke(); } }
public void CreateFromFibTreeAndNormalize(FibTree tree) { Root = new FibTreeNode(null); Labels.Clear(); copyNodeAndChildrens(Root, tree.Root); normalize(); TreeChanged?.Invoke(); }
public void CreateFromNormalizedFibTreeAndCompress(FibTree tree) { Root = new FibTreeNode(null); Labels.Clear(); Dictionary <FibTreeNode, CompressData> compressData = new Dictionary <FibTreeNode, CompressData>(); calculateCompressData(tree.Root, compressData); addChildrenWithStride(Root, tree.Root, compressData); TreeChanged?.Invoke(); }
protected void OnTreeChanged(object sender, EventArgs e) { if (Parent != null) { Parent.OnTreeChanged(sender, e); } else { TreeChanged?.Invoke(sender, e); } }