Warning: session_start(): open(/var/lib/php/sessions/sess_0674121v15egq5hgt7bup1fk09, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
sclass StefansOS_ConnectToServer implements AutoCloseable {
DialogIO io;
volatile bool on;
Set subs = synchroLinkedHashSet();
VF1 onLine;
S server = "botcompany.de";
L onConnected = syncList();
void start {
if (on) ret;
on = true;
_connect();
doEvery_daemon_highPriority(30000, r { if (io != null) io.sendLine("") });
}
void cleanMeUp { on = false; closeIO(); }
public void close { cleanMeUp(); }
void _connect {
thread "Connect" {
while (licensed() && on) {
try {
io = talkTo(server, 6000);
io.getSocket().setSoTimeout(30000+10000);
print("Connected.");
pcallFAll(onConnected);
temp tempAfterwards(r { print("Disconnected.") });
io.sendLine(format("computerID=*", computerID()));
for (S channel : cloneList(subs)) io.sendLine(format("sub *", channel));
print("Sent computer ID: " + computerID());
S line;
while ((line = io.readLine()) != null)
pcallF(onLine, line);
} catch e { // pcall would also do an annoying message box
printShortException(e);
}
closeIO();
sleepSeconds(5);
}
}
}
void closeIO {
if (io != null) { pcall { io.close(); } io = null; }
}
bool connected() { ret io != null; }
void sub(S channel) {
if (subs.add(channel) && io != null)
pcall { io.sendLine(format("sub *", channel); }
}
void startWithSubs(S... channels) {
for (S channel : channels) sub(channel);
start();
}
void sendLine(S line) {
if (io != null)
io.sendLine(line);
else print("Can't send, not connected: " + line);
}
}