/// <summary> /// Trigger the node to display its forwarding table. /// </summary> /// <param name="node">The ID of the node to display the forwarding table for.</param> /// <param name="routes">The strings which represent each route the forwarding table knows of.</param> public void DisplayForwardingTable(UUID node, Route[] routes, params UUID[] boards) { if (!IsNode(node)) { return; } _factory.Host.Say("Displaying forwarding table. " + boards.Length + " buttons selected for " + GetNode(node).Name + "."); foreach (UUID board in boards) { if (board == UUID.Zero) { continue; } if (_displayingBoards.ContainsKey(board)) { foreach (UUID oldNode in _displayingBoards[board]) { if (!oldNode.Equals(node) && IsNode(oldNode)) { GetNode(oldNode).RemoveBoard(board); } } _displayingBoards[board] = _displayingBoards[board].Concat(new UUID[] { node }); } else { _displayingBoards.Add(board, new UUID[] { node }); } } new Thread(() => { try { GetNode(node). DisplayForwardingTable(routes, boards. Where(board => !board.Equals(UUID.Zero) && _factory.PrimExists(board)). Select <UUID, IPrim>(board => _factory[board])); } catch (Exception e) { Logger.Warn("Problem displaying board. " + e.Message); } }).Start(); }