Routenplaner scheint nun endlich sauber zu funktionieren.

Es müssen natürlich wieder einige Dinge nachimplementiert werden.
This commit is contained in:
Stephan Richter
2021-03-18 18:56:38 +01:00
parent 540d1be489
commit 937e061892
5 changed files with 49 additions and 34 deletions

View File

@@ -162,6 +162,13 @@ public class RoutePrepper extends BaseClass implements Runnable{
}
}
private boolean fail() {
notify(failListeners);
// if (isSet(route) route.reset();
route = null;
return false;
}
public void onFail(EventListener l) {
failListeners.add(l);
}
@@ -181,28 +188,16 @@ public class RoutePrepper extends BaseClass implements Runnable{
public boolean prepareRoute() {
try {
if (isNull(context) || context.invalidated()) return false;
route = chooseRoute(context);
if (isNull(route)) return false;
context.route(route);
notify(foundListeners);
if (!route.reserveFor(context)) {
route.reset();
route = null;
return false;
}
notify(lockedListeners);
if (!route.prepareAndLock()) {
route.reset();
route = null;
return false;
}
notify(preparedListeners);
return true;
} finally {
if (isNull(route)) notify(failListeners);
}
if (isNull(context) || context.invalidated()) return fail();
route = chooseRoute(context);
if (isNull(route)) return fail();
context.route(route);
notify(foundListeners);
if (!route.reserveFor(context)) return fail();
notify(lockedListeners);
if (!route.prepareAndLock()) return fail();
notify(preparedListeners);
return true;
}