Gefunden und registriert sind verschiedene Zustände
Mengen abgleichen und eine Registrierung erst nach ihrer Bestätigung übernehmen.
Eine Ereignisschleife kann zunächst mögliche Fenster entdecken und anschließend Ereignisse für neue Kennungen registrieren. Die Menge discovered beschreibt das Suchergebnis, registered die bestätigten Registrierungen. Diese Zustände dürfen nicht gleichgesetzt werden: Eine gefundene Kennung kann bei der Registrierung scheitern. Erst eine positive Antwort fügt sie zu registered hinzu; bei einem Fehler bleibt sie für einen späteren Versuch offen. Nach einer erfolgreichen vollständigen Entdeckung dürfen nicht mehr gefundene Kennungen aus der Buchführung entfernt werden. Der Kurs modelliert X11-artige Druck- und Loslassereignisse ausschließlich als erfundene Datenobjekte; die Beispiele enthalten keine Desktop-Aufrufe.
Ein Beispiel
Bisher registered={101, 102}, neu discovered={102, 103}. 101 ist verschwunden, 102 bleibt, 103 ist neu. Wenn die Registrierung von 103 scheitert, lautet der bestätigte neue Zustand {102}. Beim nächsten vollständigen Suchlauf wird 103 erneut als noch zu registrierender Kandidat erkannt.
Python 3.11 · Lehrbeispiel
registered = {101, 102}
discovered = {102, 103}
confirmed_new = set() # die Fake-Registrierung von 103 scheitert
next_registered = (registered & discovered) | confirmed_new
print(sorted(next_registered))
print(sorted(discovered - next_registered))
Erwartete Ausgabe
[102]
[103]