Merge "Add Network.fromNetworkHandle()" into pi-dev

am: c0b767a937

Change-Id: I22e68ab29982690dee5b2c0c6e1fbd47df0b0326
This commit is contained in:
Lorenzo Colitti
2018-03-30 14:55:48 +00:00
committed by android-build-merger

View File

@@ -77,6 +77,11 @@ public class Network implements Parcelable {
httpKeepAlive ? Integer.parseInt(System.getProperty("http.maxConnections", "5")) : 0; httpKeepAlive ? Integer.parseInt(System.getProperty("http.maxConnections", "5")) : 0;
private static final long httpKeepAliveDurationMs = private static final long httpKeepAliveDurationMs =
Long.parseLong(System.getProperty("http.keepAliveDuration", "300000")); // 5 minutes. Long.parseLong(System.getProperty("http.keepAliveDuration", "300000")); // 5 minutes.
// Value used to obfuscate network handle longs.
// The HANDLE_MAGIC value MUST be kept in sync with the corresponding
// value in the native/android/net.c NDK implementation.
private static final long HANDLE_MAGIC = 0xcafed00dL;
private static final int HANDLE_MAGIC_SIZE = 32;
/** /**
* @hide * @hide
@@ -334,6 +339,25 @@ public class Network implements Parcelable {
} }
} }
/**
* Returns a {@link Network} object given a handle returned from {@link #getNetworkHandle}.
*
* @param networkHandle a handle returned from {@link #getNetworkHandle}.
* @return A {@link Network} object derived from {@code networkHandle}.
*/
public static Network fromNetworkHandle(long networkHandle) {
if (networkHandle == 0) {
throw new IllegalArgumentException(
"Network.fromNetworkHandle refusing to instantiate NETID_UNSET Network.");
}
if ((networkHandle & ((1L << HANDLE_MAGIC_SIZE) - 1)) != HANDLE_MAGIC
|| networkHandle < 0) {
throw new IllegalArgumentException(
"Value passed to fromNetworkHandle() is not a network handle.");
}
return new Network((int) (networkHandle >> HANDLE_MAGIC_SIZE));
}
/** /**
* Returns a handle representing this {@code Network}, for use with the NDK API. * Returns a handle representing this {@code Network}, for use with the NDK API.
*/ */
@@ -356,14 +380,10 @@ public class Network implements Parcelable {
// At some future date it may be desirable to realign the handle with // At some future date it may be desirable to realign the handle with
// Multiple Provisioning Domains API recommendations, as made by the // Multiple Provisioning Domains API recommendations, as made by the
// IETF mif working group. // IETF mif working group.
//
// The handleMagic value MUST be kept in sync with the corresponding
// value in the native/android/net.c NDK implementation.
if (netId == 0) { if (netId == 0) {
return 0L; // make this zero condition obvious for debugging return 0L; // make this zero condition obvious for debugging
} }
final long handleMagic = 0xcafed00dL; return (((long) netId) << HANDLE_MAGIC_SIZE) | HANDLE_MAGIC;
return (((long) netId) << 32) | handleMagic;
} }
// implement the Parcelable interface // implement the Parcelable interface