eth manager updates for network management APIs
Private methods added to EthernetManager for network management to be made public when ready. Bug: 210485380 Test: make, flash and boot Change-Id: I7f484d373e05225c98bf0e6111afdc12be31764f
This commit is contained in:
@@ -16,7 +16,9 @@
|
|||||||
|
|
||||||
package android.net;
|
package android.net;
|
||||||
|
|
||||||
|
import android.annotation.CallbackExecutor;
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
|
import android.annotation.Nullable;
|
||||||
import android.annotation.RequiresPermission;
|
import android.annotation.RequiresPermission;
|
||||||
import android.annotation.SystemApi;
|
import android.annotation.SystemApi;
|
||||||
import android.annotation.SystemService;
|
import android.annotation.SystemService;
|
||||||
@@ -32,6 +34,7 @@ import com.android.internal.os.BackgroundThread;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
|
import java.util.function.BiConsumer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A class representing the IP configuration of the Ethernet network.
|
* A class representing the IP configuration of the Ethernet network.
|
||||||
@@ -315,4 +318,83 @@ public class EthernetManager {
|
|||||||
}
|
}
|
||||||
return new TetheredInterfaceRequest(mService, cbInternal);
|
return new TetheredInterfaceRequest(mService, cbInternal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final class InternalNetworkManagementListener
|
||||||
|
extends IInternalNetworkManagementListener.Stub {
|
||||||
|
@NonNull
|
||||||
|
private final Executor mExecutor;
|
||||||
|
@NonNull
|
||||||
|
private final BiConsumer<Network, InternalNetworkManagementException> mListener;
|
||||||
|
|
||||||
|
InternalNetworkManagementListener(
|
||||||
|
@NonNull final Executor executor,
|
||||||
|
@NonNull final BiConsumer<Network, InternalNetworkManagementException> listener) {
|
||||||
|
Objects.requireNonNull(executor, "Pass a non-null executor");
|
||||||
|
Objects.requireNonNull(listener, "Pass a non-null listener");
|
||||||
|
mExecutor = executor;
|
||||||
|
mListener = listener;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onComplete(
|
||||||
|
@Nullable final Network network,
|
||||||
|
@Nullable final InternalNetworkManagementException e) {
|
||||||
|
mExecutor.execute(() -> mListener.accept(network, e));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private InternalNetworkManagementListener getInternalNetworkManagementListener(
|
||||||
|
@Nullable final Executor executor,
|
||||||
|
@Nullable final BiConsumer<Network, InternalNetworkManagementException> listener) {
|
||||||
|
if (null != listener) {
|
||||||
|
Objects.requireNonNull(executor, "Pass a non-null executor, or a null listener");
|
||||||
|
}
|
||||||
|
final InternalNetworkManagementListener proxy;
|
||||||
|
if (null == listener) {
|
||||||
|
proxy = null;
|
||||||
|
} else {
|
||||||
|
proxy = new InternalNetworkManagementListener(executor, listener);
|
||||||
|
}
|
||||||
|
return proxy;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateConfiguration(
|
||||||
|
@NonNull String iface,
|
||||||
|
@NonNull InternalNetworkUpdateRequest request,
|
||||||
|
@Nullable @CallbackExecutor Executor executor,
|
||||||
|
@Nullable BiConsumer<Network, InternalNetworkManagementException> listener) {
|
||||||
|
final InternalNetworkManagementListener proxy = getInternalNetworkManagementListener(
|
||||||
|
executor, listener);
|
||||||
|
try {
|
||||||
|
mService.updateConfiguration(iface, request, proxy);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
throw e.rethrowFromSystemServer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void connectNetwork(
|
||||||
|
@NonNull String iface,
|
||||||
|
@Nullable @CallbackExecutor Executor executor,
|
||||||
|
@Nullable BiConsumer<Network, InternalNetworkManagementException> listener) {
|
||||||
|
final InternalNetworkManagementListener proxy = getInternalNetworkManagementListener(
|
||||||
|
executor, listener);
|
||||||
|
try {
|
||||||
|
mService.connectNetwork(iface, proxy);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
throw e.rethrowFromSystemServer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void disconnectNetwork(
|
||||||
|
@NonNull String iface,
|
||||||
|
@Nullable @CallbackExecutor Executor executor,
|
||||||
|
@Nullable BiConsumer<Network, InternalNetworkManagementException> listener) {
|
||||||
|
final InternalNetworkManagementListener proxy = getInternalNetworkManagementListener(
|
||||||
|
executor, listener);
|
||||||
|
try {
|
||||||
|
mService.disconnectNetwork(iface, proxy);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
throw e.rethrowFromSystemServer();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ package android.net;
|
|||||||
|
|
||||||
import android.net.IpConfiguration;
|
import android.net.IpConfiguration;
|
||||||
import android.net.IEthernetServiceListener;
|
import android.net.IEthernetServiceListener;
|
||||||
|
import android.net.IInternalNetworkManagementListener;
|
||||||
|
import android.net.InternalNetworkUpdateRequest;
|
||||||
import android.net.ITetheredInterfaceCallback;
|
import android.net.ITetheredInterfaceCallback;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -36,4 +38,8 @@ interface IEthernetManager
|
|||||||
void setIncludeTestInterfaces(boolean include);
|
void setIncludeTestInterfaces(boolean include);
|
||||||
void requestTetheredInterface(in ITetheredInterfaceCallback callback);
|
void requestTetheredInterface(in ITetheredInterfaceCallback callback);
|
||||||
void releaseTetheredInterface(in ITetheredInterfaceCallback callback);
|
void releaseTetheredInterface(in ITetheredInterfaceCallback callback);
|
||||||
|
void updateConfiguration(String iface, in InternalNetworkUpdateRequest request,
|
||||||
|
in IInternalNetworkManagementListener listener);
|
||||||
|
void connectNetwork(String iface, in IInternalNetworkManagementListener listener);
|
||||||
|
void disconnectNetwork(String iface, in IInternalNetworkManagementListener listener);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user