aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/ui/src/main/java/com/wireguard/android/configStore/ConfigStore.kt
diff options
context:
space:
mode:
Diffstat (limited to 'ui/src/main/java/com/wireguard/android/configStore/ConfigStore.kt')
-rw-r--r--ui/src/main/java/com/wireguard/android/configStore/ConfigStore.kt68
1 files changed, 68 insertions, 0 deletions
diff --git a/ui/src/main/java/com/wireguard/android/configStore/ConfigStore.kt b/ui/src/main/java/com/wireguard/android/configStore/ConfigStore.kt
new file mode 100644
index 0000000..6c381b6
--- /dev/null
+++ b/ui/src/main/java/com/wireguard/android/configStore/ConfigStore.kt
@@ -0,0 +1,68 @@
+/*
+ * Copyright © 2017-2019 WireGuard LLC. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.wireguard.android.configStore
+
+import com.wireguard.config.Config
+
+/**
+ * Interface for persistent storage providers for WireGuard configurations.
+ */
+interface ConfigStore {
+ /**
+ * Create a persistent tunnel, which must have a unique name within the persistent storage
+ * medium.
+ *
+ * @param name The name of the tunnel to create.
+ * @param config Configuration for the new tunnel.
+ * @return The configuration that was actually saved to persistent storage.
+ */
+ @Throws(Exception::class)
+ fun create(name: String, config: Config): Config
+
+ /**
+ * Delete a persistent tunnel.
+ *
+ * @param name The name of the tunnel to delete.
+ */
+ @Throws(Exception::class)
+ fun delete(name: String)
+
+ /**
+ * Enumerate the names of tunnels present in persistent storage.
+ *
+ * @return The set of present tunnel names.
+ */
+ fun enumerate(): Set<String>
+
+ /**
+ * Load the configuration for the tunnel given by `name`.
+ *
+ * @param name The identifier for the configuration in persistent storage (i.e. the name of the
+ * tunnel).
+ * @return An in-memory representation of the configuration loaded from persistent storage.
+ */
+ @Throws(Exception::class)
+ fun load(name: String): Config
+
+ /**
+ * Rename the configuration for the tunnel given by `name`.
+ *
+ * @param name The identifier for the existing configuration in persistent storage.
+ * @param replacement The new identifier for the configuration in persistent storage.
+ */
+ @Throws(Exception::class)
+ fun rename(name: String, replacement: String)
+
+ /**
+ * Save the configuration for an existing tunnel given by `name`.
+ *
+ * @param name The identifier for the configuration in persistent storage (i.e. the name of
+ * the tunnel).
+ * @param config An updated configuration object for the tunnel.
+ * @return The configuration that was actually saved to persistent storage.
+ */
+ @Throws(Exception::class)
+ fun save(name: String, config: Config): Config
+}