!7 sclass AllOnlineComputers extends DynCalculatedList { L data; transient DialogIO io; L calc() { ret data; } void cleanMeUp { if (io != null) io.close(); } void start { super.start(); connect(); doEvery(30000, r { if (io != null) io.sendLine(""); }); } void connect { thread "Connect" { while licensed { try { io = talkTo("smartbot.botcompany.de", 6000); io.getSocket().setSoTimeout(30000+10000); print("Connected."); temp tempAfterwards(r { print("Disconnected.") }); io.sendLine(format("computerID=*", computerID())); io.sendLine(format("sub *", "computerIDs")); print("Sent computer ID: " + computerID()); S line; while ((line = io.readLine()) != null) { if (nempty(line)) print("Have msg: " + line); new Matches m; if (swic(line, "ComputerIDs = ", m)) setField(data := safeUnstruct($1)); } } catch e { // pcall would also do an annoying message box printShortException(e); } io = null; sleepSeconds(5); } } } }