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

View File

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

View File

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