Просмотр исходного кода

net: simplify update_last_seen() method

Also fix its usage by Lilith
draoi 2 лет назад
Родитель
Сommit
6a0d4cfe7d
2 измененных файлов с 8 добавлено и 18 удалено
  1. 2 2
      bin/lilith/src/main.rs
  2. 6 16
      src/net/hosts.rs

+ 2 - 2
bin/lilith/src/main.rs

@@ -193,7 +193,7 @@ impl Lilith {
                 continue
             }
 
-            let (entry, position) = hosts.container.fetch_last(HostColor::White).await;
+            let (entry, _) = hosts.container.fetch_last(HostColor::White).await;
 
             let url = &entry.0;
             let last_seen = &entry.1;
@@ -221,7 +221,7 @@ impl Lilith {
             let last_seen = UNIX_EPOCH.elapsed().unwrap().as_secs();
             hosts
                 .container
-                .update_last_seen(HostColor::White as usize, url, last_seen, Some(position))
+                .update_last_seen(HostColor::White as usize, url.clone(), last_seen)
                 .await;
         }
     }

+ 6 - 16
src/net/hosts.rs

@@ -391,26 +391,16 @@ impl HostContainer {
     }
 
     /// Update the last_seen field of a peer on a hostlist.
-    pub async fn update_last_seen(
-        &self,
-        color: usize,
-        addr: &Url,
-        last_seen: u64,
-        position: Option<usize>,
-    ) {
+    pub async fn update_last_seen(&self, color: usize, addr: Url, last_seen: u64) {
         trace!(target: "net::hosts::update_last_seen()", "[START] list={:?}",
         HostColor::try_from(color).unwrap());
 
-        let i = match position {
-            Some(i) => i,
-            None => self.get_index_at_addr(color, addr.clone()).await.unwrap(),
-        };
-
         let mut list = self.hostlists[color].write().await;
-        list[i] = (addr.clone(), last_seen);
-        list.sort_by_key(|entry| entry.1);
-        list.reverse();
-
+        if let Some(entry) = list.iter_mut().find(|(u, _)| *u == addr) {
+            entry.1 = last_seen;
+            list.sort_by_key(|entry| entry.1);
+            list.reverse();
+        }
         trace!(target: "net::hosts::update_last_seen()", "[END] list={:?}",
                HostColor::try_from(color).unwrap());
     }