improve user disconnection detection
This commit is contained in:
parent
f762128922
commit
75ec382fb7
2 changed files with 13 additions and 16 deletions
|
@ -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) {
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in a new issue