forked from kay/RouterOS
M17: "Bekannte Router" im Verbinden-Tab (SavedRouter/SavedRoutersStore), Standort-Freitextfeld, Scroll-Cap ab 4 Einträgen. Bugfix: Umbenennen- TextField steckte in einem sich selbst deaktivierenden Button. M18: Live-Traffic-Punkt an Interfaces (InterfaceTrafficMonitor, eigene SSH-Verbindung, monitor-traffic-Polling). Dabei zwei reale CLI-Parser-Bugs gefunden und gefixt: running/disabled-Flags werden als Buchstaben vor dem ersten Feld codiert, nicht als key=value; monitor-traffic liefert "50.7kbps" statt einer reinen Zahl. M19: Übersicht-Tab — animierte Flussrichtung auf allen Verbindungslinien (TimelineView+dashPhase), frei verschiebbare Knoten mit Live-folgenden Linien, Zurücksetzen-Button. Zusätzlich (noch nicht live getestet, nur Build+Unit-Tests grün): LAN-Port-Konflikt-Prüfung im Einrichten-Assistenten mit doppelter Sicherheitsbestätigung, "Fertig"-Button nach erfolgreichem Anwenden. 82 Tests grün. HANDOFF.md/README.md/Manual.md/CHATLOG.md aktualisiert. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YDmUd93KxsYGr2kLTotWnG
13 lines
549 B
Swift
13 lines
549 B
Swift
import Foundation
|
|
|
|
/// A single live throughput sample for one interface, from RouterOS' `/interface monitor-traffic
|
|
/// <name> once` — used to distinguish "link up" (`NetworkInterface.running`, already shown) from
|
|
/// "actually carrying data right now", which `running` alone can't: a port stays `running` as soon
|
|
/// as its link is up/negotiated, even sitting completely idle.
|
|
struct InterfaceTraffic: Equatable {
|
|
let rxBitsPerSecond: Int
|
|
let txBitsPerSecond: Int
|
|
|
|
var isActive: Bool { rxBitsPerSecond > 0 || txBitsPerSecond > 0 }
|
|
}
|