aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/app/src/main/java/com/wireguard/config/Interface.java
diff options
context:
space:
mode:
authorSamuel Holland <samuel@sholland.org>2017-08-23 23:47:44 -0500
committerSamuel Holland <samuel@sholland.org>2017-08-23 23:47:44 -0500
commitb2357e58e3dcbba77797cc07dd3dec2349ccff1d (patch)
tree2d97b3190e3f044a7897b9ebae96cd365bba8596 /app/src/main/java/com/wireguard/config/Interface.java
parentConfig/Interface/Peer: Fix some missed change notifications (diff)
downloadwireguard-android-b2357e58e3dcbba77797cc07dd3dec2349ccff1d.tar.xz
wireguard-android-b2357e58e3dcbba77797cc07dd3dec2349ccff1d.zip
Config/Interface/Peer: Make Parcelable
This allows saving the editor state across restarts. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'app/src/main/java/com/wireguard/config/Interface.java')
-rw-r--r--app/src/main/java/com/wireguard/config/Interface.java46
1 files changed, 44 insertions, 2 deletions
diff --git a/app/src/main/java/com/wireguard/config/Interface.java b/app/src/main/java/com/wireguard/config/Interface.java
index a4ea4b81..b291844a 100644
--- a/app/src/main/java/com/wireguard/config/Interface.java
+++ b/app/src/main/java/com/wireguard/config/Interface.java
@@ -3,16 +3,32 @@ package com.wireguard.config;
import android.databinding.BaseObservable;
import android.databinding.Bindable;
import android.databinding.Observable;
+import android.os.Parcel;
+import android.os.Parcelable;
import com.wireguard.android.BR;
-import com.wireguard.crypto.Keypair;
import com.wireguard.crypto.KeyEncoding;
+import com.wireguard.crypto.Keypair;
/**
* Represents the configuration for a WireGuard interface (an [Interface] block).
*/
-public class Interface extends BaseObservable implements Copyable<Interface>, Observable {
+public class Interface extends BaseObservable
+ implements Copyable<Interface>, Observable, Parcelable {
+ public static final Parcelable.Creator<Interface> CREATOR
+ = new Parcelable.Creator<Interface>() {
+ @Override
+ public Interface createFromParcel(final Parcel in) {
+ return new Interface(in);
+ }
+
+ @Override
+ public Interface[] newArray(final int size) {
+ return new Interface[size];
+ }
+ };
+
private String address;
private String dns;
private String listenPort;
@@ -20,6 +36,18 @@ public class Interface extends BaseObservable implements Copyable<Interface>, Ob
private String mtu;
private String privateKey;
+ public Interface() {
+ // Do nothing.
+ }
+
+ protected Interface(final Parcel in) {
+ address = in.readString();
+ dns = in.readString();
+ listenPort = in.readString();
+ mtu = in.readString();
+ setPrivateKey(in.readString());
+ }
+
@Override
public Interface copy() {
final Interface copy = new Interface();
@@ -45,6 +73,11 @@ public class Interface extends BaseObservable implements Copyable<Interface>, Ob
notifyChange();
}
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
public void generateKeypair() {
keypair = new Keypair();
privateKey = keypair.getPrivateKey();
@@ -158,4 +191,13 @@ public class Interface extends BaseObservable implements Copyable<Interface>, Ob
sb.append(Attribute.PRIVATE_KEY.composeWith(privateKey));
return sb.toString();
}
+
+ @Override
+ public void writeToParcel(final Parcel dest, final int flags) {
+ dest.writeString(address);
+ dest.writeString(dns);
+ dest.writeString(listenPort);
+ dest.writeString(mtu);
+ dest.writeString(privateKey);
+ }
}