Merge "[NAN] Use a hidden class for peer ID opaque handle"

am: e43c1a3e3e

Change-Id: Iac94c4b27f7bfc89c1b1f7779760512ee2a11e31
This commit is contained in:
Etan Cohen
2016-09-28 05:14:30 +00:00
committed by android-build-merger
2 changed files with 28 additions and 12 deletions

View File

@@ -16,6 +16,7 @@
package android.net.wifi.nan; package android.net.wifi.nan;
import android.annotation.NonNull;
import android.annotation.Nullable; import android.annotation.Nullable;
import android.annotation.SystemApi; import android.annotation.SystemApi;
import android.net.wifi.RttManager; import android.net.wifi.RttManager;
@@ -163,7 +164,7 @@ public class WifiNanDiscoveryBaseSession {
* (note: no retransmissions are attempted in other failure cases). A value of 0 * (note: no retransmissions are attempted in other failure cases). A value of 0
* indicates no retries. Max permitted value is {@link #getMaxSendRetryCount()}. * indicates no retries. Max permitted value is {@link #getMaxSendRetryCount()}.
*/ */
public void sendMessage(Object peerHandle, int messageId, @Nullable byte[] message, public void sendMessage(@NonNull Object peerHandle, int messageId, @Nullable byte[] message,
int retryCount) { int retryCount) {
if (mTerminated) { if (mTerminated) {
Log.w(TAG, "sendMessage: called on terminated session"); Log.w(TAG, "sendMessage: called on terminated session");
@@ -205,7 +206,7 @@ public class WifiNanDiscoveryBaseSession {
* can be arbitrary and non-unique. * can be arbitrary and non-unique.
* @param message The message to be transmitted. * @param message The message to be transmitted.
*/ */
public void sendMessage(Object peerHandle, int messageId, @Nullable byte[] message) { public void sendMessage(@NonNull Object peerHandle, int messageId, @Nullable byte[] message) {
sendMessage(peerHandle, messageId, message, 0); sendMessage(peerHandle, messageId, message, 0);
} }
@@ -270,8 +271,8 @@ public class WifiNanDiscoveryBaseSession {
* {@link android.net.ConnectivityManager#requestNetwork(android.net.NetworkRequest,android.net.ConnectivityManager.NetworkCallback)} * {@link android.net.ConnectivityManager#requestNetwork(android.net.NetworkRequest,android.net.ConnectivityManager.NetworkCallback)}
* [or other varieties of that API]. * [or other varieties of that API].
*/ */
public String createNetworkSpecifier(@WifiNanManager.DataPathRole int role, Object peerHandle, public String createNetworkSpecifier(@WifiNanManager.DataPathRole int role,
@Nullable byte[] token) { @Nullable Object peerHandle, @Nullable byte[] token) {
if (mTerminated) { if (mTerminated) {
Log.w(TAG, "createNetworkSpecifier: called on terminated session"); Log.w(TAG, "createNetworkSpecifier: called on terminated session");
return null; return null;

View File

@@ -459,15 +459,20 @@ public class WifiNanManager {
/** @hide */ /** @hide */
public void sendMessage(int clientId, int sessionId, Object peerHandle, byte[] message, public void sendMessage(int clientId, int sessionId, Object peerHandle, byte[] message,
int messageId, int retryCount) { int messageId, int retryCount) {
if (peerHandle == null) {
throw new IllegalArgumentException(
"sendMessage: invalid peerHandle - must be non-null");
}
if (VDBG) { if (VDBG) {
Log.v(TAG, "sendMessage(): clientId=" + clientId + ", sessionId=" + sessionId Log.v(TAG, "sendMessage(): clientId=" + clientId + ", sessionId=" + sessionId
+ ", peerHandle=" + peerHandle + ", messageId=" + messageId + ", retryCount=" + ", peerHandle=" + ((OpaquePeerHandle) peerHandle).peerId + ", messageId="
+ retryCount); + messageId + ", retryCount=" + retryCount);
} }
try { try {
mService.sendMessage(clientId, sessionId, (Integer) peerHandle, message, messageId, mService.sendMessage(clientId, sessionId, ((OpaquePeerHandle) peerHandle).peerId,
retryCount); message, messageId, retryCount);
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
@@ -499,7 +504,8 @@ public class WifiNanManager {
byte[] token) { byte[] token) {
if (VDBG) { if (VDBG) {
Log.v(TAG, "createNetworkSpecifier: role=" + role + ", sessionId=" + sessionId Log.v(TAG, "createNetworkSpecifier: role=" + role + ", sessionId=" + sessionId
+ ", peerHandle=" + peerHandle + ", token=" + token); + ", peerHandle=" + ((peerHandle == null) ? peerHandle
: ((OpaquePeerHandle) peerHandle).peerId) + ", token=" + token);
} }
int type; int type;
@@ -539,7 +545,7 @@ public class WifiNanManager {
json.put(NETWORK_SPECIFIER_KEY_CLIENT_ID, clientId); json.put(NETWORK_SPECIFIER_KEY_CLIENT_ID, clientId);
json.put(NETWORK_SPECIFIER_KEY_SESSION_ID, sessionId); json.put(NETWORK_SPECIFIER_KEY_SESSION_ID, sessionId);
if (peerHandle != null) { if (peerHandle != null) {
json.put(NETWORK_SPECIFIER_KEY_PEER_ID, (Integer) peerHandle); json.put(NETWORK_SPECIFIER_KEY_PEER_ID, ((OpaquePeerHandle) peerHandle).peerId);
} }
if (token != null) { if (token != null) {
json.put(NETWORK_SPECIFIER_KEY_TOKEN, json.put(NETWORK_SPECIFIER_KEY_TOKEN,
@@ -844,7 +850,7 @@ public class WifiNanManager {
break; break;
case CALLBACK_MATCH: case CALLBACK_MATCH:
mOriginalCallback.onServiceDiscovered( mOriginalCallback.onServiceDiscovered(
Integer.valueOf(msg.arg1), new OpaquePeerHandle(msg.arg1),
msg.getData().getByteArray(MESSAGE_BUNDLE_KEY_MESSAGE), msg.getData().getByteArray(MESSAGE_BUNDLE_KEY_MESSAGE),
msg.getData().getByteArray(MESSAGE_BUNDLE_KEY_MESSAGE2)); msg.getData().getByteArray(MESSAGE_BUNDLE_KEY_MESSAGE2));
break; break;
@@ -855,7 +861,7 @@ public class WifiNanManager {
mOriginalCallback.onMessageSendFailed(msg.arg1); mOriginalCallback.onMessageSendFailed(msg.arg1);
break; break;
case CALLBACK_MESSAGE_RECEIVED: case CALLBACK_MESSAGE_RECEIVED:
mOriginalCallback.onMessageReceived(Integer.valueOf(msg.arg1), mOriginalCallback.onMessageReceived(new OpaquePeerHandle(msg.arg1),
(byte[]) msg.obj); (byte[]) msg.obj);
break; break;
} }
@@ -986,4 +992,13 @@ public class WifiNanManager {
mOriginalCallback.onSessionTerminated(reason); mOriginalCallback.onSessionTerminated(reason);
} }
} }
/** @hide */
public static class OpaquePeerHandle {
public OpaquePeerHandle(int peerId) {
this.peerId = peerId;
}
public int peerId;
}
} }