Poll /sys/class/net/ every 5 s; trigger reconnect when a WiFi interface vanishes.
(self)
| 614 | try: |
| 615 | marker_file = '/tmp/ragnar_wifi_manager.pid' |
| 616 | with open(marker_file, 'w') as f: |
| 617 | f.write(f"{os.getpid()}\n{time.time()}\n") |
| 618 | except Exception as e: |
| 619 | self.logger.warning(f"Could not create restart marker: {e}") |
| 620 | |
| 621 | def _cleanup_restart_marker(self): |
| 622 | """Clean up the restart marker file""" |
| 623 | try: |
| 624 | marker_file = '/tmp/ragnar_wifi_manager.pid' |
| 625 | if os.path.exists(marker_file): |
| 626 | os.remove(marker_file) |
| 627 | except Exception as e: |
| 628 | self.logger.warning(f"Could not clean up restart marker: {e}") |
| 629 | |
| 630 | def _was_recently_running(self): |
| 631 | """Check if WiFi manager was recently running (indicates service restart)""" |
| 632 | try: |
| 633 | marker_file = '/tmp/ragnar_wifi_manager.pid' |
| 634 | if os.path.exists(marker_file): |
| 635 | with open(marker_file, 'r') as f: |
| 636 | lines = f.readlines() |
| 637 | if len(lines) >= 2: |
| 638 | last_start_time = float(lines[1].strip()) |
| 639 | # If the marker is less than 5 minutes old, consider it a recent restart |
| 640 | if time.time() - last_start_time < 300: |
| 641 | self.logger.info("Found recent WiFi manager marker - service restart detected") |
| 642 | return True |