Make smart futures avoid polling.
[python_utils.git] / arper.py
index 2fc07674eedd0b8206586323ccb03bdea240fb33..4d6a3a2baa8900a4e6f5f535ad846766b2d353d7 100644 (file)
--- a/arper.py
+++ b/arper.py
@@ -78,23 +78,6 @@ class Arper(persistent.Persistent):
     def get_mac_by_ip(self, ip: str) -> Optional[str]:
         return self.state.inverse.get(ip, None)
 
-    @overrides
-    def save(self) -> bool:
-        if len(self.state) > config.config['arper_min_entries_to_be_valid']:
-            logger.debug(
-                f'Persisting state to {config.config["arper_cache_location"]}'
-            )
-            with file_utils.FileWriter(config.config['arper_cache_location']) as wf:
-                for (mac, ip) in self.state.items():
-                    mac = mac.lower()
-                    print(f'{mac}, {ip}', file=wf)
-            return True
-        else:
-            logger.warning(
-                f'Only saw {len(self.state)} entries; needed at least {config.config["arper_min_entries_to_be_valid"]} to bother persisting.'
-            )
-            return False
-
     @classmethod
     @overrides
     def load(cls) -> Any:
@@ -125,3 +108,20 @@ class Arper(persistent.Persistent):
 
         logger.debug('No usable saved state found')
         return None
+
+    @overrides
+    def save(self) -> bool:
+        if len(self.state) > config.config['arper_min_entries_to_be_valid']:
+            logger.debug(
+                f'Persisting state to {config.config["arper_cache_location"]}'
+            )
+            with file_utils.FileWriter(config.config['arper_cache_location']) as wf:
+                for (mac, ip) in self.state.items():
+                    mac = mac.lower()
+                    print(f'{mac}, {ip}', file=wf)
+            return True
+        else:
+            logger.warning(
+                f'Only saw {len(self.state)} entries; needed at least {config.config["arper_min_entries_to_be_valid"]} to bother persisting.'
+            )
+            return False