Exemple #1
0
 private void UpdateRoute(TopologyEntry newEntry)
 {
     lock (tablesLock)
     {
         var oldEntry = RoutingTable.FirstOrDefault(r => r.Destination.Equals(newEntry.Destination));
         if (oldEntry == null && newEntry.Feasible != -1)
         {
             RoutingTable.Add(new RouteEntry(newEntry.Destination, newEntry.Neighbor, DateTime.Now));
         }
         else
         {
             var fastest = TopologyTable.Where(t => t.Destination.Equals(newEntry.Destination)).OrderBy(t => t.Feasible).FirstOrDefault();
             if (fastest == null)
             {
                 RoutingTable.Remove(oldEntry);
             }
             else if (!oldEntry.Neighbor.Equals(fastest.Neighbor))
             {
                 RoutingTable.Remove(oldEntry);
                 RoutingTable.Add(new RouteEntry(fastest.Destination, fastest.Neighbor, DateTime.Now));
             }
         }
     }
 }