Add fatal error handler

This commit is contained in:
Andrea Cavalli 2021-01-10 02:42:23 +01:00
parent 5c193b549b
commit ed0961e027
3 changed files with 36 additions and 2 deletions

View File

@ -100,6 +100,10 @@ public class AsyncTdEasy {
throw new InitializationException(ex);
}
}
// Register fatal error handler
fatalErrors.subscribe(settings.getFatalErrorHandler()::onFatalError);
return true;
})
.subscribeOn(Schedulers.boundedElastic())

View File

@ -0,0 +1,8 @@
package it.tdlight.tdlibsession.td.easy;
import it.tdlight.tdlibsession.FatalErrorType;
import reactor.core.publisher.Mono;
public interface FatalErrorHandler {
Mono<String> onFatalError(FatalErrorType error);
}

View File

@ -21,6 +21,7 @@ public class TdEasySettings {
private final Long phoneNumber;
private final String botToken;
private final ParameterRequestHandler parameterRequestHandler;
private final FatalErrorHandler fatalErrorHandler;
public TdEasySettings(boolean useTestDc,
String databaseDirectory,
@ -38,7 +39,8 @@ public class TdEasySettings {
boolean ignoreFileNames,
@Nullable Long phoneNumber,
@Nullable String botToken,
@Nullable ParameterRequestHandler parameterRequestHandler) {
@Nullable ParameterRequestHandler parameterRequestHandler,
@Nullable FatalErrorHandler fatalErrorHandler) {
this.useTestDc = useTestDc;
this.databaseDirectory = databaseDirectory;
this.filesDirectory = filesDirectory;
@ -66,6 +68,10 @@ public class TdEasySettings {
}
}
this.parameterRequestHandler = parameterRequestHandler;
if (fatalErrorHandler == null) {
fatalErrorHandler = error -> null;
}
this.fatalErrorHandler = fatalErrorHandler;
}
public boolean isPhoneNumberSet() {
@ -88,6 +94,10 @@ public class TdEasySettings {
return Objects.requireNonNull(parameterRequestHandler, "You must set a parameter request handler");
}
public FatalErrorHandler getFatalErrorHandler() {
return Objects.requireNonNull(fatalErrorHandler, "You must set a fatal error handler");
}
public static Builder newBuilder() {
return new Builder();
}
@ -113,6 +123,8 @@ public class TdEasySettings {
@Nullable
private String botToken = null;
private ParameterRequestHandler parameterRequestHandler;
@Nullable
private FatalErrorHandler fatalErrorHandler;
private Builder() {
@ -263,6 +275,15 @@ public class TdEasySettings {
return parameterRequestHandler;
}
public Builder setFatalErrorHandler(FatalErrorHandler fatalErrorHandler) {
this.fatalErrorHandler = fatalErrorHandler;
return this;
}
public FatalErrorHandler getFatalErrorHandler() {
return fatalErrorHandler;
}
public TdEasySettings build() {
return new TdEasySettings(useTestDc,
databaseDirectory,
@ -280,7 +301,8 @@ public class TdEasySettings {
ignoreFileNames,
phoneNumber,
botToken,
parameterRequestHandler
parameterRequestHandler,
fatalErrorHandler
);
}
}