Revert "Change Ethernet API to use OutcomeReceiver"
Revert "Change network management listener to outcome receiver"
Revert submission 2028203-ethernet-outcomereceiver
Reason for revert: BuildMonitor investigating b/225169800
Reverted Changes:
I4c204a848:Change Ethernet API to use OutcomeReceiver
I7c46545a4:Change Ethernet API to use OutcomeReceiver
Id8fadfed9:Change network management listener to outcome rece...
Change-Id: I45af594f7233ed89113f4cf7f977092271980672
diff --git a/framework-t/Sources.bp b/framework-t/Sources.bp
index bc27852..217a1f6 100644
--- a/framework-t/Sources.bp
+++ b/framework-t/Sources.bp
@@ -131,8 +131,8 @@
"src/android/net/EthernetNetworkUpdateRequest.java",
"src/android/net/EthernetNetworkUpdateRequest.aidl",
"src/android/net/IEthernetManager.aidl",
+ "src/android/net/IEthernetNetworkManagementListener.aidl",
"src/android/net/IEthernetServiceListener.aidl",
- "src/android/net/INetworkInterfaceOutcomeReceiver.aidl",
"src/android/net/ITetheredInterfaceCallback.aidl",
],
path: "src",
diff --git a/framework-t/src/android/net/EthernetManager.java b/framework-t/src/android/net/EthernetManager.java
index 4f61dbf..793f28d 100644
--- a/framework-t/src/android/net/EthernetManager.java
+++ b/framework-t/src/android/net/EthernetManager.java
@@ -30,7 +30,6 @@
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Build;
-import android.os.OutcomeReceiver;
import android.os.RemoteException;
import com.android.internal.annotations.GuardedBy;
@@ -41,6 +40,7 @@
import java.util.ArrayList;
import java.util.Objects;
import java.util.concurrent.Executor;
+import java.util.function.BiConsumer;
/**
* A class that manages and configures Ethernet interfaces.
@@ -443,45 +443,41 @@
return new TetheredInterfaceRequest(mService, cbInternal);
}
- private static final class NetworkInterfaceOutcomeReceiver
- extends INetworkInterfaceOutcomeReceiver.Stub {
+ private static final class InternalNetworkManagementListener
+ extends IEthernetNetworkManagementListener.Stub {
@NonNull
private final Executor mExecutor;
@NonNull
- private final OutcomeReceiver<String, EthernetNetworkManagementException> mCallback;
+ private final BiConsumer<Network, EthernetNetworkManagementException> mListener;
- NetworkInterfaceOutcomeReceiver(
+ InternalNetworkManagementListener(
@NonNull final Executor executor,
- @NonNull final OutcomeReceiver<String, EthernetNetworkManagementException>
- callback) {
+ @NonNull final BiConsumer<Network, EthernetNetworkManagementException> listener) {
Objects.requireNonNull(executor, "Pass a non-null executor");
- Objects.requireNonNull(callback, "Pass a non-null callback");
+ Objects.requireNonNull(listener, "Pass a non-null listener");
mExecutor = executor;
- mCallback = callback;
+ mListener = listener;
}
@Override
- public void onResult(@NonNull String iface) {
- mExecutor.execute(() -> mCallback.onResult(iface));
- }
-
- @Override
- public void onError(@NonNull EthernetNetworkManagementException e) {
- mExecutor.execute(() -> mCallback.onError(e));
+ public void onComplete(
+ @Nullable final Network network,
+ @Nullable final EthernetNetworkManagementException e) {
+ mExecutor.execute(() -> mListener.accept(network, e));
}
}
- private NetworkInterfaceOutcomeReceiver makeNetworkInterfaceOutcomeReceiver(
+ private InternalNetworkManagementListener getInternalNetworkManagementListener(
@Nullable final Executor executor,
- @Nullable final OutcomeReceiver<String, EthernetNetworkManagementException> callback) {
- if (null != callback) {
- Objects.requireNonNull(executor, "Pass a non-null executor, or a null callback");
+ @Nullable final BiConsumer<Network, EthernetNetworkManagementException> listener) {
+ if (null != listener) {
+ Objects.requireNonNull(executor, "Pass a non-null executor, or a null listener");
}
- final NetworkInterfaceOutcomeReceiver proxy;
- if (null == callback) {
+ final InternalNetworkManagementListener proxy;
+ if (null == listener) {
proxy = null;
} else {
- proxy = new NetworkInterfaceOutcomeReceiver(executor, callback);
+ proxy = new InternalNetworkManagementListener(executor, listener);
}
return proxy;
}
@@ -496,17 +492,14 @@
* Similarly, use {@link NetworkCapabilities.Builder} to build a {@code NetworkCapabilities}
* object for this network to put inside the {@code request}.
*
- * This function accepts an {@link OutcomeReceiver} that is called once the operation has
- * finished execution.
+ * If non-null, the listener will be called exactly once after this is called, unless
+ * a synchronous exception was thrown.
*
* @param iface the name of the interface to act upon.
* @param request the {@link EthernetNetworkUpdateRequest} used to set an ethernet network's
* {@link StaticIpConfiguration} and {@link NetworkCapabilities} values.
- * @param executor an {@link Executor} to execute the callback on. Optional if callback is null.
- * @param callback an optional {@link OutcomeReceiver} to listen for completion of the
- * operation. On success, {@link OutcomeReceiver#onResult} is called with the
- * interface name. On error, {@link OutcomeReceiver#onError} is called with more
- * information about the error.
+ * @param executor an {@link Executor} to execute the listener on. Optional if listener is null.
+ * @param listener an optional {@link BiConsumer} to listen for completion of the operation.
* @throws SecurityException if the process doesn't hold
* {@link android.Manifest.permission.MANAGE_ETHERNET_NETWORKS}.
* @throws UnsupportedOperationException if called on a non-automotive device or on an
@@ -522,11 +515,11 @@
@NonNull String iface,
@NonNull EthernetNetworkUpdateRequest request,
@Nullable @CallbackExecutor Executor executor,
- @Nullable OutcomeReceiver<String, EthernetNetworkManagementException> callback) {
+ @Nullable BiConsumer<Network, EthernetNetworkManagementException> listener) {
Objects.requireNonNull(iface, "iface must be non-null");
Objects.requireNonNull(request, "request must be non-null");
- final NetworkInterfaceOutcomeReceiver proxy = makeNetworkInterfaceOutcomeReceiver(
- executor, callback);
+ final InternalNetworkManagementListener proxy = getInternalNetworkManagementListener(
+ executor, listener);
try {
mService.updateConfiguration(iface, request, proxy);
} catch (RemoteException e) {
@@ -537,17 +530,15 @@
/**
* Set an ethernet network's link state up.
*
- * When the link is successfully turned up, the callback will be called with the network
- * interface was torn down, if any. If any error or unexpected condition happens while the
- * system tries to turn the interface down, the callback will be called with an appropriate
- * exception. The callback is guaranteed to be called exactly once for each call to this method.
+ * When the link is successfully turned up, the listener will be called with the resulting
+ * network. If any error or unexpected condition happens while the system tries to turn the
+ * interface up, the listener will be called with an appropriate exception.
+ * The listener is guaranteed to be called exactly once for each call to this method, but this
+ * may take an unbounded amount of time depending on the actual network conditions.
*
* @param iface the name of the interface to act upon.
- * @param executor an {@link Executor} to execute the callback on. Optional if callback is null.
- * @param callback an optional {@link OutcomeReceiver} to listen for completion of the
- * operation. On success, {@link OutcomeReceiver#onResult} is called with the
- * interface name. On error, {@link OutcomeReceiver#onError} is called with more
- * information about the error.
+ * @param executor an {@link Executor} to execute the listener on. Optional if listener is null.
+ * @param listener an optional {@link BiConsumer} to listen for completion of the operation.
* @throws SecurityException if the process doesn't hold
* {@link android.Manifest.permission.MANAGE_ETHERNET_NETWORKS}.
* @throws UnsupportedOperationException if called on a non-automotive device.
@@ -562,10 +553,10 @@
public void connectNetwork(
@NonNull String iface,
@Nullable @CallbackExecutor Executor executor,
- @Nullable OutcomeReceiver<String, EthernetNetworkManagementException> callback) {
+ @Nullable BiConsumer<Network, EthernetNetworkManagementException> listener) {
Objects.requireNonNull(iface, "iface must be non-null");
- final NetworkInterfaceOutcomeReceiver proxy = makeNetworkInterfaceOutcomeReceiver(
- executor, callback);
+ final InternalNetworkManagementListener proxy = getInternalNetworkManagementListener(
+ executor, listener);
try {
mService.connectNetwork(iface, proxy);
} catch (RemoteException e) {
@@ -576,17 +567,14 @@
/**
* Set an ethernet network's link state down.
*
- * When the link is successfully turned down, the callback will be called with the network
- * interface was torn down, if any. If any error or unexpected condition happens while the
- * system tries to turn the interface down, the callback will be called with an appropriate
- * exception. The callback is guaranteed to be called exactly once for each call to this method.
+ * When the link is successfully turned down, the listener will be called with the network that
+ * was torn down, if any. If any error or unexpected condition happens while the system tries to
+ * turn the interface down, the listener will be called with an appropriate exception.
+ * The listener is guaranteed to be called exactly once for each call to this method.
*
* @param iface the name of the interface to act upon.
- * @param executor an {@link Executor} to execute the callback on. Optional if callback is null.
- * @param callback an optional {@link OutcomeReceiver} to listen for completion of the
- * operation. On success, {@link OutcomeReceiver#onResult} is called with the
- * interface name. On error, {@link OutcomeReceiver#onError} is called with more
- * information about the error.
+ * @param executor an {@link Executor} to execute the listener on. Optional if listener is null.
+ * @param listener an optional {@link BiConsumer} to listen for completion of the operation.
* @throws SecurityException if the process doesn't hold
* {@link android.Manifest.permission.MANAGE_ETHERNET_NETWORKS}.
* @throws UnsupportedOperationException if called on a non-automotive device.
@@ -601,10 +589,10 @@
public void disconnectNetwork(
@NonNull String iface,
@Nullable @CallbackExecutor Executor executor,
- @Nullable OutcomeReceiver<String, EthernetNetworkManagementException> callback) {
+ @Nullable BiConsumer<Network, EthernetNetworkManagementException> listener) {
Objects.requireNonNull(iface, "iface must be non-null");
- final NetworkInterfaceOutcomeReceiver proxy = makeNetworkInterfaceOutcomeReceiver(
- executor, callback);
+ final InternalNetworkManagementListener proxy = getInternalNetworkManagementListener(
+ executor, listener);
try {
mService.disconnectNetwork(iface, proxy);
} catch (RemoteException e) {
diff --git a/framework-t/src/android/net/IEthernetManager.aidl b/framework-t/src/android/net/IEthernetManager.aidl
index 95ae907..544d02b 100644
--- a/framework-t/src/android/net/IEthernetManager.aidl
+++ b/framework-t/src/android/net/IEthernetManager.aidl
@@ -18,9 +18,8 @@
import android.net.IpConfiguration;
import android.net.IEthernetServiceListener;
-import android.net.EthernetNetworkManagementException;
+import android.net.IEthernetNetworkManagementListener;
import android.net.EthernetNetworkUpdateRequest;
-import android.net.INetworkInterfaceOutcomeReceiver;
import android.net.ITetheredInterfaceCallback;
/**
@@ -40,7 +39,7 @@
void requestTetheredInterface(in ITetheredInterfaceCallback callback);
void releaseTetheredInterface(in ITetheredInterfaceCallback callback);
void updateConfiguration(String iface, in EthernetNetworkUpdateRequest request,
- in INetworkInterfaceOutcomeReceiver listener);
- void connectNetwork(String iface, in INetworkInterfaceOutcomeReceiver listener);
- void disconnectNetwork(String iface, in INetworkInterfaceOutcomeReceiver listener);
+ in IEthernetNetworkManagementListener listener);
+ void connectNetwork(String iface, in IEthernetNetworkManagementListener listener);
+ void disconnectNetwork(String iface, in IEthernetNetworkManagementListener listener);
}
diff --git a/framework-t/src/android/net/INetworkInterfaceOutcomeReceiver.aidl b/framework-t/src/android/net/IEthernetNetworkManagementListener.aidl
similarity index 80%
rename from framework-t/src/android/net/INetworkInterfaceOutcomeReceiver.aidl
rename to framework-t/src/android/net/IEthernetNetworkManagementListener.aidl
index 85795ea..93edccf 100644
--- a/framework-t/src/android/net/INetworkInterfaceOutcomeReceiver.aidl
+++ b/framework-t/src/android/net/IEthernetNetworkManagementListener.aidl
@@ -17,9 +17,9 @@
package android.net;
import android.net.EthernetNetworkManagementException;
+import android.net.Network;
/** @hide */
-oneway interface INetworkInterfaceOutcomeReceiver {
- void onResult(in String iface);
- void onError(in EthernetNetworkManagementException e);
+oneway interface IEthernetNetworkManagementListener {
+ void onComplete(in Network network, in EthernetNetworkManagementException exception);
}
\ No newline at end of file