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:
James Mattis
2021-12-14 18:23:30 -08:00
parent d03aa846f3
commit be91b5831e
2 changed files with 88 additions and 0 deletions

View File

@@ -16,7 +16,9 @@
package android.net;
import android.annotation.CallbackExecutor;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.annotation.SystemService;
@@ -32,6 +34,7 @@ import com.android.internal.os.BackgroundThread;
import java.util.ArrayList;
import java.util.Objects;
import java.util.concurrent.Executor;
import java.util.function.BiConsumer;
/**
* A class representing the IP configuration of the Ethernet network.
@@ -315,4 +318,83 @@ public class EthernetManager {
}
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();
}
}
}

View File

@@ -18,6 +18,8 @@ package android.net;
import android.net.IpConfiguration;
import android.net.IEthernetServiceListener;
import android.net.IInternalNetworkManagementListener;
import android.net.InternalNetworkUpdateRequest;
import android.net.ITetheredInterfaceCallback;
/**
@@ -36,4 +38,8 @@ interface IEthernetManager
void setIncludeTestInterfaces(boolean include);
void requestTetheredInterface(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);
}