Fixing on problem introduced by fixing "Fake TBR": wipe pod adsress on Discard but keep state object

This commit is contained in:
Theo van Elsberg 2022-07-03 19:36:46 +02:00
parent ad89d54319
commit a3de99b993

View file

@ -49,24 +49,38 @@ public abstract class ErosPodStateManager {
this.gsonInstance = createGson(); this.gsonInstance = createGson();
} }
/**
* Discard Pod state
*/
public final void discardState() { public final void discardState() {
this.podState = new PodState(this.podState.address); // Change on commit 4cea57acf6d74baffef83e1f04376b10bb5c1978 Nov 2021
// As by commit, keep podState object but wipe address to 0x0 to signal hasPodState()
// there is no state ( = no Pod address).
this.podState = new PodState(0x0);
storePodState(); storePodState();
} }
/**
* Init Pod state but only if it has valid state.
* @param address New Pod address
*/
public final void initState(int address) { public final void initState(int address) {
if (hasPodState()) { if (hasPodState()) {
throw new IllegalStateException("Can not init a new pod state: podState <> null"); throw new IllegalStateException("Can not init a new pod state: State is " +
"null or discarded?");
} }
podState = new PodState(address); podState = new PodState(address);
storePodState(); storePodState();
} }
/** /**
* @return true if we have a Pod state (which at least contains an address), indicating it is legal to call getters on PodStateManager * @return true if we have a Pod state (which at least contains an valid address), indicating
* it is legal to call getters on PodStateManager
*/ */
public final boolean hasPodState() { public final boolean hasPodState() {
return podState != null;
return this.podState != null
&& this.podState.getAddress() != 0x0; // 0x0=discarded
} }
/** /**