Merge "Add Network.fromNetworkHandle()" into pi-dev
am: c0b767a937 Change-Id: I22e68ab29982690dee5b2c0c6e1fbd47df0b0326
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user