示例#1
0
 /// <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();
 }