2017-07-30 08:48:57 +02:00
|
|
|
package com.wireguard.android;
|
|
|
|
|
|
|
|
import android.databinding.ObservableList;
|
|
|
|
|
|
|
|
import com.wireguard.config.Profile;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Interface for the background connection service.
|
|
|
|
*/
|
|
|
|
|
|
|
|
public interface ProfileServiceInterface {
|
2017-08-01 02:06:47 +02:00
|
|
|
/**
|
|
|
|
* Attempt to set up and enable an interface for this profile. The profile's connection state
|
|
|
|
* will be updated if connection is successful. If this profile is already connected, or it is
|
|
|
|
* not a known profile, no changes will be made.
|
|
|
|
*
|
|
|
|
* @param profile The profile (in the list of known profiles) to use for this connection.
|
|
|
|
*/
|
|
|
|
void connectProfile(Profile profile);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Creates a deep copy of an existing profile that can be modified and then passed to
|
|
|
|
* saveProfile. If the given profile is not a known profile, or the profile cannot be copied,
|
|
|
|
* this function returns null.
|
|
|
|
*
|
|
|
|
* @param profile The existing profile (in the list of known profiles) to copy.
|
|
|
|
* @return A copy of the profile that can be freely modified.
|
|
|
|
*/
|
|
|
|
Profile copyProfileForEditing(Profile profile);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Attempt to disable and tear down an interface for this profile. The profile's connection
|
|
|
|
* state will be updated if disconnection is successful. If this profile is already
|
|
|
|
* disconnected, or it is not a known profile, no changes will be made.
|
|
|
|
*
|
|
|
|
* @param profile The profile (in the list of known profiles) to disconnect.
|
|
|
|
*/
|
|
|
|
void disconnectProfile(Profile profile);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Retrieve a list of profiles known and managed by this service. Profiles in this list must not
|
|
|
|
* be modified directly. If a profile is to be updated, first create a copy of it by calling
|
|
|
|
* copyProfileForEditing().
|
|
|
|
*
|
|
|
|
* @return The list of known profiles.
|
|
|
|
*/
|
2017-07-30 08:48:57 +02:00
|
|
|
ObservableList<Profile> getProfiles();
|
2017-08-01 02:06:47 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Remove a profile from being managed by this service. If the profile is currently connected,
|
|
|
|
* it will be disconnected before it is removed. If successful, configuration for this profile
|
|
|
|
* will be removed from persistent storage. If the profile is not a known profile, no changes
|
|
|
|
* will be made.
|
|
|
|
*
|
|
|
|
* @param profile The profile (in the list of known profiles) to remove.
|
|
|
|
*/
|
|
|
|
void removeProfile(Profile profile);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Adds the profile if it does not yet exist, or replaces an existing profile of the same name.
|
|
|
|
* If the profile exists and is currently connected, it will be disconnected before the
|
|
|
|
* replacement, and the service will attempt to reconnect it afterward. If the profile is new,
|
|
|
|
* it will be set to the disconnected state. If successful, configuration for this profile will
|
|
|
|
* be saved to persistent storage.
|
|
|
|
*
|
|
|
|
* @param newProfile The profile to add, or a copy of the profile to replace.
|
|
|
|
*/
|
|
|
|
void saveProfile(Profile newProfile);
|
2017-07-30 08:48:57 +02:00
|
|
|
}
|