NAN: Support multiple instantiation per UID - introduce a client ID.
Add the concept of a client ID which is used to identify a specific (one of several) clients in all API calls. (cherry-pick ofaa36f07194, Change-Id: I43f13d51bee8b57c6d0ba1174168288b8d6c21c5) Bug: 26962024 Change-Id: I0e0ddf37ea9800ae97115d6af384b54b49a40d74 (cherry picked from commit5155990c09)
This commit is contained in:
committed by
Mitchell Wills
parent
eefc000601
commit
982a045a8b
@@ -34,17 +34,18 @@ import android.net.wifi.nan.SubscribeSettings;
|
||||
interface IWifiNanManager
|
||||
{
|
||||
// client API
|
||||
void connect(in IBinder binder, in IWifiNanEventListener listener, int events);
|
||||
void disconnect(in IBinder binder);
|
||||
void requestConfig(in ConfigRequest configRequest);
|
||||
int connect(in IBinder binder, in IWifiNanEventListener listener, int events);
|
||||
void disconnect(int clientId, in IBinder binder);
|
||||
void requestConfig(int clientId, in ConfigRequest configRequest);
|
||||
|
||||
// session API
|
||||
int createSession(in IWifiNanSessionListener listener, int events);
|
||||
void publish(int sessionId, in PublishData publishData, in PublishSettings publishSettings);
|
||||
void subscribe(int sessionId, in SubscribeData subscribeData,
|
||||
int createSession(int clientId, in IWifiNanSessionListener listener, int events);
|
||||
void publish(int clientId, int sessionId, in PublishData publishData,
|
||||
in PublishSettings publishSettings);
|
||||
void subscribe(int clientId, int sessionId, in SubscribeData subscribeData,
|
||||
in SubscribeSettings subscribeSettings);
|
||||
void sendMessage(int sessionId, int peerId, in byte[] message, int messageLength,
|
||||
void sendMessage(int clientId, int sessionId, int peerId, in byte[] message, int messageLength,
|
||||
int messageId);
|
||||
void stopSession(int sessionId);
|
||||
void destroySession(int sessionId);
|
||||
void stopSession(int clientId, int sessionId);
|
||||
void destroySession(int clientId, int sessionId);
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ public class WifiNanManager {
|
||||
private static final boolean VDBG = false; // STOPSHIP if true
|
||||
|
||||
private IBinder mBinder;
|
||||
|
||||
private int mClientId = -1;
|
||||
private IWifiNanManager mService;
|
||||
|
||||
/**
|
||||
@@ -70,10 +70,14 @@ public class WifiNanManager {
|
||||
if (listener == null) {
|
||||
throw new IllegalArgumentException("Invalid listener - must not be null");
|
||||
}
|
||||
if (mClientId != -1) {
|
||||
Log.w(TAG, "connect(): mClientId=" + mClientId
|
||||
+ ": seems to calling connect() without disconnecting() first!");
|
||||
}
|
||||
if (mBinder == null) {
|
||||
mBinder = new Binder();
|
||||
}
|
||||
mService.connect(mBinder, listener.callback, events);
|
||||
mClientId = mService.connect(mBinder, listener.callback, events);
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
@@ -91,8 +95,9 @@ public class WifiNanManager {
|
||||
public void disconnect() {
|
||||
try {
|
||||
if (VDBG) Log.v(TAG, "disconnect()");
|
||||
mService.disconnect(mBinder);
|
||||
mService.disconnect(mClientId, mBinder);
|
||||
mBinder = null;
|
||||
mClientId = -1;
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
@@ -114,7 +119,7 @@ public class WifiNanManager {
|
||||
public void requestConfig(ConfigRequest configRequest) {
|
||||
if (VDBG) Log.v(TAG, "requestConfig(): configRequest=" + configRequest);
|
||||
try {
|
||||
mService.requestConfig(configRequest);
|
||||
mService.requestConfig(mClientId, configRequest);
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
@@ -169,9 +174,9 @@ public class WifiNanManager {
|
||||
int sessionId;
|
||||
|
||||
try {
|
||||
sessionId = mService.createSession(listener.callback, events);
|
||||
sessionId = mService.createSession(mClientId, listener.callback, events);
|
||||
if (DBG) Log.d(TAG, "publish: session created - sessionId=" + sessionId);
|
||||
mService.publish(sessionId, publishData, publishSettings);
|
||||
mService.publish(mClientId, sessionId, publishData, publishSettings);
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
@@ -197,7 +202,7 @@ public class WifiNanManager {
|
||||
}
|
||||
|
||||
try {
|
||||
mService.publish(sessionId, publishData, publishSettings);
|
||||
mService.publish(mClientId, sessionId, publishData, publishSettings);
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
@@ -251,9 +256,9 @@ public class WifiNanManager {
|
||||
int sessionId;
|
||||
|
||||
try {
|
||||
sessionId = mService.createSession(listener.callback, events);
|
||||
sessionId = mService.createSession(mClientId, listener.callback, events);
|
||||
if (DBG) Log.d(TAG, "subscribe: session created - sessionId=" + sessionId);
|
||||
mService.subscribe(sessionId, subscribeData, subscribeSettings);
|
||||
mService.subscribe(mClientId, sessionId, subscribeData, subscribeSettings);
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
@@ -282,7 +287,7 @@ public class WifiNanManager {
|
||||
}
|
||||
|
||||
try {
|
||||
mService.subscribe(sessionId, subscribeData, subscribeSettings);
|
||||
mService.subscribe(mClientId, sessionId, subscribeData, subscribeSettings);
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
@@ -295,7 +300,7 @@ public class WifiNanManager {
|
||||
if (DBG) Log.d(TAG, "Stop NAN session #" + sessionId);
|
||||
|
||||
try {
|
||||
mService.stopSession(sessionId);
|
||||
mService.stopSession(mClientId, sessionId);
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
@@ -308,7 +313,7 @@ public class WifiNanManager {
|
||||
if (DBG) Log.d(TAG, "Destroy NAN session #" + sessionId);
|
||||
|
||||
try {
|
||||
mService.destroySession(sessionId);
|
||||
mService.destroySession(mClientId, sessionId);
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
@@ -324,7 +329,7 @@ public class WifiNanManager {
|
||||
Log.v(TAG, "sendMessage(): sessionId=" + sessionId + ", peerId=" + peerId
|
||||
+ ", messageLength=" + messageLength + ", messageId=" + messageId);
|
||||
}
|
||||
mService.sendMessage(sessionId, peerId, message, messageLength, messageId);
|
||||
mService.sendMessage(mClientId, sessionId, peerId, message, messageLength, messageId);
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user