Config/Interface/Peer: Fix some missed change notifications

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
Samuel Holland 2017-08-23 23:43:58 -05:00
parent d1a5c1a72e
commit 95384851cd
3 changed files with 18 additions and 15 deletions

View File

@ -76,6 +76,7 @@ public class Config extends BaseObservable
name = null; name = null;
peers.clear(); peers.clear();
} }
notifyChange();
} }
public Interface getInterface() { public Interface getInterface() {
@ -116,9 +117,9 @@ public class Config extends BaseObservable
} else if ("[Peer]".equals(line)) { } else if ("[Peer]".equals(line)) {
currentPeer = addPeer(); currentPeer = addPeer();
} else if (currentPeer == null) { } else if (currentPeer == null) {
iface.parseFrom(line); iface.parse(line);
} else { } else {
currentPeer.parseFrom(line); currentPeer.parse(line);
} }
} }
} }

View File

@ -42,6 +42,7 @@ public class Interface extends BaseObservable implements Copyable<Interface>, Ob
mtu = null; mtu = null;
setPrivateKey(null); setPrivateKey(null);
} }
notifyChange();
} }
public void generateKeypair() { public void generateKeypair() {
@ -81,16 +82,16 @@ public class Interface extends BaseObservable implements Copyable<Interface>, Ob
return keypair != null ? keypair.getPublicKey() : null; return keypair != null ? keypair.getPublicKey() : null;
} }
public void parseFrom(final String line) { public void parse(final String line) {
final Attribute key = Attribute.match(line); final Attribute key = Attribute.match(line);
if (key == Attribute.ADDRESS) if (key == Attribute.ADDRESS)
address = key.parseFrom(line); setAddress(key.parseFrom(line));
else if (key == Attribute.DNS) else if (key == Attribute.DNS)
dns = key.parseFrom(line); setDns(key.parseFrom(line));
else if (key == Attribute.LISTEN_PORT) else if (key == Attribute.LISTEN_PORT)
listenPort = key.parseFrom(line); setListenPort(key.parseFrom(line));
else if (key == Attribute.MTU) else if (key == Attribute.MTU)
mtu = key.parseFrom(line); setMtu(key.parseFrom(line));
else if (key == Attribute.PRIVATE_KEY) else if (key == Attribute.PRIVATE_KEY)
setPrivateKey(key.parseFrom(line)); setPrivateKey(key.parseFrom(line));
else else

View File

@ -12,7 +12,7 @@ import com.android.databinding.library.baseAdapters.BR;
public class Peer extends BaseObservable implements Copyable<Peer>, Observable { public class Peer extends BaseObservable implements Copyable<Peer>, Observable {
private String allowedIPs; private String allowedIPs;
private Config config; private final Config config;
private String endpoint; private String endpoint;
private String persistentKeepalive; private String persistentKeepalive;
private String publicKey; private String publicKey;
@ -38,6 +38,7 @@ public class Peer extends BaseObservable implements Copyable<Peer>, Observable {
endpoint = source.endpoint; endpoint = source.endpoint;
persistentKeepalive = source.persistentKeepalive; persistentKeepalive = source.persistentKeepalive;
publicKey = source.publicKey; publicKey = source.publicKey;
notifyChange();
} }
@Bindable @Bindable
@ -60,23 +61,23 @@ public class Peer extends BaseObservable implements Copyable<Peer>, Observable {
return publicKey; return publicKey;
} }
public void parseFrom(final String line) { public void parse(final String line) {
final Attribute key = Attribute.match(line); final Attribute key = Attribute.match(line);
if (key == Attribute.ALLOWED_IPS) if (key == Attribute.ALLOWED_IPS)
allowedIPs = key.parseFrom(line); setAllowedIPs(key.parseFrom(line));
else if (key == Attribute.ENDPOINT) else if (key == Attribute.ENDPOINT)
endpoint = key.parseFrom(line); setEndpoint(key.parseFrom(line));
else if (key == Attribute.PERSISTENT_KEEPALIVE) else if (key == Attribute.PERSISTENT_KEEPALIVE)
persistentKeepalive = key.parseFrom(line); setPersistentKeepalive(key.parseFrom(line));
else if (key == Attribute.PUBLIC_KEY) else if (key == Attribute.PUBLIC_KEY)
publicKey = key.parseFrom(line); setPublicKey(key.parseFrom(line));
else else
throw new IllegalArgumentException(line); throw new IllegalArgumentException(line);
} }
public void removeSelf() { public void removeSelf() {
config.getPeers().remove(this); if (!config.getPeers().remove(this))
config = null; throw new IllegalStateException("This peer was already removed from its config");
} }
public void setAllowedIPs(String allowedIPs) { public void setAllowedIPs(String allowedIPs) {