improve user disconnection detection

This commit is contained in:
Arnaud Vergnet 2020-12-16 18:00:03 +01:00
parent f762128922
commit 75ec382fb7
2 changed files with 13 additions and 16 deletions

View file

@ -1,6 +1,7 @@
package fr.insa.clavardator.ui.users; package fr.insa.clavardator.ui.users;
import fr.insa.clavardator.users.PeerUser; import fr.insa.clavardator.users.PeerUser;
import fr.insa.clavardator.util.Log;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.fxml.Initializable; import javafx.fxml.Initializable;
import javafx.scene.shape.Circle; import javafx.scene.shape.Circle;
@ -20,20 +21,20 @@ public class UserActiveIndicatorController implements Initializable {
} }
private void updateState() { private void updateState(boolean isActive) {
if (user != null) { circle.getStyleClass().clear();
circle.getStyleClass().clear(); if (isActive) {
if (user.isActive()) { circle.getStyleClass().add("active-user-dot");
circle.getStyleClass().add("active-user-dot"); } else {
} else { circle.getStyleClass().add("inactive-user-dot");
circle.getStyleClass().add("inactive-user-dot");
}
} }
} }
private void onStateChange(PropertyChangeEvent propertyChangeEvent) { private void onStateChange(PropertyChangeEvent propertyChangeEvent) {
if (propertyChangeEvent.getPropertyName().equals("state")) { if (propertyChangeEvent.getPropertyName().equals("state")) {
updateState(); final PeerUser.State newState = (PeerUser.State) propertyChangeEvent.getNewValue();
Log.v(this.getClass().getSimpleName(), "User state updated to " + newState.toString());
updateState(newState == PeerUser.State.CONNECTED);
} }
} }
@ -44,7 +45,7 @@ public class UserActiveIndicatorController implements Initializable {
} }
this.user = user; this.user = user;
user.addObserver(this::onStateChange); user.addObserver(this::onStateChange);
updateState(); updateState(user.isActive());
} }
public void setSize(double value) { public void setSize(double value) {

View file

@ -129,10 +129,10 @@ public class PeerUser extends User implements Comparable<PeerUser> {
} }
}, },
e -> { e -> {
Log.e(this.getClass().getSimpleName(), "Error receiving message from " + id, e);
if (e instanceof EOFException) { if (e instanceof EOFException) {
disconnect(); disconnect();
} else { } else {
Log.e(this.getClass().getSimpleName(), "Error receiving message from " + id, e);
errorCallback.onError(e); errorCallback.onError(e);
} }
}); });
@ -158,10 +158,6 @@ public class PeerUser extends User implements Comparable<PeerUser> {
return history; return history;
} }
public State getState() {
return state;
}
private void setState(State state) { private void setState(State state) {
pcs.firePropertyChange("state", this.state, state); pcs.firePropertyChange("state", this.state, state);
this.state = state; this.state = state;
@ -181,7 +177,7 @@ public class PeerUser extends User implements Comparable<PeerUser> {
return getUsername().compareTo(peerUser.getUsername()); return getUsername().compareTo(peerUser.getUsername());
} }
enum State { public enum State {
CONNECTING, CONNECTING,
CONNECTED, CONNECTED,
DISCONNECTED, DISCONNECTED,