private @Nullable Session session;
private String appToken = "";
private int wsReconnectInterval;
+ @Nullable
+ private Boolean vmSupported;
public enum BoxModel {
FBXGW_R1_FULL, // Freebox Server (v6) revision 1
ApiVersion.class, null, null);
this.uriBuilder = config.getUriBuilder(version.baseUrl());
this.wsReconnectInterval = config.wsReconnectInterval;
+ this.vmSupported = null;
getManager(LoginManager.class);
+ getManager(SystemManager.class);
getManager(NetShareManager.class);
getManager(LanManager.class);
getManager(WifiManager.class);
public void openSession(String appToken) throws FreeboxException {
Session newSession = getManager(LoginManager.class).openSession(appToken);
- getManager(WebSocketManager.class).openSession(newSession.sessionToken(), wsReconnectInterval);
session = newSession;
this.appToken = appToken;
+ if (vmSupported == null) {
+ vmSupported = getManager(SystemManager.class).getConfig().modelInfo().hasVm();
+ }
+ getManager(WebSocketManager.class).openSession(newSession.sessionToken(), wsReconnectInterval,
+ Boolean.TRUE.equals(vmSupported));
}
public String grant() throws FreeboxException {
@Nullable
private String sessionToken;
private int reconnectInterval;
- private boolean vmSupported = true;
- private boolean retryConnectWithoutVm = false;
+ private boolean vmSupported;
private record Register(String action, List<String> events) {
Register(String... events) {
}
}
- public void openSession(@Nullable String sessionToken, int reconnectInterval) {
+ public void openSession(@Nullable String sessionToken, int reconnectInterval, boolean vmSupported) {
this.sessionToken = sessionToken;
this.reconnectInterval = reconnectInterval;
+ this.vmSupported = vmSupported;
if (reconnectInterval > 0) {
try {
client.start();
default:
logger.warn("Unhandled notification received: {}", result.action);
}
- } else if (result.action == Action.REGISTER) {
- logger.debug("Event registration failed!");
- if (vmSupported && "unsupported event vm_state_changed".equals(result.msg)) {
- vmSupported = false;
- retryConnectWithoutVm = true;
- }
}
}
public void onWebSocketClose(int statusCode, @NonNullByDefault({}) String reason) {
logger.debug("Socket Closed: [{}] - reason {}", statusCode, reason);
this.wsSession = null;
- if (retryConnectWithoutVm) {
- logger.debug("Retry connecting websocket client without VM support");
- retryConnectWithoutVm = false;
- startReconnect();
- }
}
@Override