Hallo zusammen,
ich habe versucht, einen DisconnectedListener zu implementieren, stoße dabei aber auf Probleme.
Wenn ich die LAN-Verbindung zwischen der Ethernet Extension und dem Brick unterbreche, wird der DisconnectedListener nicht ausgelöst. Auch beim Trennen der Stromversorgung passiert nichts.
Erst als ich einen ConnectedListener hinzugefügt und AutoReconnect aktiviert habe, wurde der DisconnectedListener ausgelöst. Allerdings geschieht dies genau zu dem Zeitpunkt, an dem sich der AutoReconnect wieder verbindet (also wenn der ConnectedListener ausgeführt wird), was etwas dauert. Der DisconnectedListener wird also nicht direkt beim Verlust der Verbindung aktiviert.
Entferne ich AutoReconnect und den ConnectedListener wieder, wird der DisconnectedListener überhaupt nicht ausgelöst.
Ist dieses Verhalten so gewollt? Es erscheint mir ziemlich unsinnig, wenn beide Listener quasi zur gleichen Zeit triggern.
Was kann ich tun? Was mache ich falsch? Was habe ich nicht verstanden? :D
public void connectToStack() {
try {
ipCon = new IPConnection();
ipCon.setTimeout(250);
ipCon.setAutoReconnect(true);
ipCon.addDisconnectedListener(new IPConnection.DisconnectedListener() {
public void disconnected(short disconnectReason) {
System.out.println("Disco");
}
});
ipCon.addConnectedListener(new IPConnection.ConnectedListener() {
public void connected(short con) {
System.out.println("conn");
}
});
ipCon.connect(hostname, port);
logger.info(
String.format("Successfully connected to Tinkerforge stack #%s (%s:%s)", number, hostname, port));
isConnectedToStack = true;
} catch (NetworkException | AlreadyConnectedException e) {
logger.severe(
String.format("Failed to connect to Tinkerforge stack #%s (%s:%s)", number, hostname, port));
isConnectedToStack = false;
}
}
Viele Grüße