Merge "Use Map for DnsSd TXT record" into jb-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
c12a244632
@@ -12705,22 +12705,6 @@ package android.net.http {
|
||||
|
||||
package android.net.nsd {
|
||||
|
||||
public class DnsSdTxtRecord implements android.os.Parcelable {
|
||||
ctor public DnsSdTxtRecord();
|
||||
ctor public DnsSdTxtRecord(byte[]);
|
||||
ctor public DnsSdTxtRecord(android.net.nsd.DnsSdTxtRecord);
|
||||
method public boolean contains(java.lang.String);
|
||||
method public int describeContents();
|
||||
method public java.lang.String get(java.lang.String);
|
||||
method public byte[] getRawData();
|
||||
method public int keyCount();
|
||||
method public int remove(java.lang.String);
|
||||
method public void set(java.lang.String, java.lang.String);
|
||||
method public int size();
|
||||
method public void writeToParcel(android.os.Parcel, int);
|
||||
field public static final android.os.Parcelable.Creator CREATOR;
|
||||
}
|
||||
|
||||
public final class NsdManager {
|
||||
method public void discoverServices(java.lang.String, int, android.net.nsd.NsdManager.DiscoveryListener);
|
||||
method public void registerService(android.net.nsd.NsdServiceInfo, int, android.net.nsd.NsdManager.RegistrationListener);
|
||||
@@ -13342,7 +13326,7 @@ package android.net.wifi.p2p {
|
||||
}
|
||||
|
||||
public static abstract interface WifiP2pManager.DnsSdTxtRecordListener {
|
||||
method public abstract void onDnsSdTxtRecordAvailable(java.lang.String, android.net.nsd.DnsSdTxtRecord, android.net.wifi.p2p.WifiP2pDevice);
|
||||
method public abstract void onDnsSdTxtRecordAvailable(java.lang.String, java.util.Map<java.lang.String, java.lang.String>, android.net.wifi.p2p.WifiP2pDevice);
|
||||
}
|
||||
|
||||
public static abstract interface WifiP2pManager.GroupInfoListener {
|
||||
@@ -13366,7 +13350,7 @@ package android.net.wifi.p2p {
|
||||
package android.net.wifi.p2p.nsd {
|
||||
|
||||
public class WifiP2pDnsSdServiceInfo extends android.net.wifi.p2p.nsd.WifiP2pServiceInfo {
|
||||
method public static android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceInfo newInstance(java.lang.String, java.lang.String, android.net.nsd.DnsSdTxtRecord);
|
||||
method public static android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceInfo newInstance(java.lang.String, java.lang.String, java.util.Map<java.lang.String, java.lang.String>);
|
||||
}
|
||||
|
||||
public class WifiP2pDnsSdServiceRequest extends android.net.wifi.p2p.nsd.WifiP2pServiceRequest {
|
||||
|
||||
@@ -36,6 +36,7 @@ import java.util.Arrays;
|
||||
*
|
||||
* The DnsSdTxtRecord object stores the entire TXT data as a single byte array, traversing it
|
||||
* as need be to implement its various methods.
|
||||
* @hide
|
||||
*
|
||||
*/
|
||||
public class DnsSdTxtRecord implements Parcelable {
|
||||
|
||||
@@ -21,7 +21,6 @@ import android.annotation.SdkConstant.SdkConstantType;
|
||||
import android.content.Context;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.IConnectivityManager;
|
||||
import android.net.nsd.DnsSdTxtRecord;
|
||||
import android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceInfo;
|
||||
import android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceResponse;
|
||||
import android.net.wifi.p2p.nsd.WifiP2pServiceInfo;
|
||||
@@ -46,6 +45,7 @@ import com.android.internal.util.Protocol;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* This class provides the API for managing Wi-Fi peer-to-peer connectivity. This lets an
|
||||
@@ -585,11 +585,11 @@ public class WifiP2pManager {
|
||||
*
|
||||
* @param fullDomainName full domain name. <br>
|
||||
* e.g) "MyPrinter._ipp._tcp.local.".
|
||||
* @param record txt record.
|
||||
* @param txtRecordMap TXT record data as a map of key/value pairs
|
||||
* @param srcDevice source device.
|
||||
*/
|
||||
public void onDnsSdTxtRecordAvailable(String fullDomainName,
|
||||
DnsSdTxtRecord record,
|
||||
Map<String, String> txtRecordMap,
|
||||
WifiP2pDevice srcDevice);
|
||||
}
|
||||
|
||||
|
||||
@@ -83,19 +83,22 @@ public class WifiP2pDnsSdServiceInfo extends WifiP2pServiceInfo {
|
||||
* e.g) "MyPrinter"
|
||||
* @param serviceType service type.<br>
|
||||
* e.g) "_ipp._tcp"
|
||||
* @param txtRecord TXT record as defined at
|
||||
* @param txtMap TXT record with key/value pair in a map confirming to format defined at
|
||||
* http://files.dns-sd.org/draft-cheshire-dnsext-dns-sd.txt
|
||||
* @return Bonjour service information object
|
||||
*/
|
||||
public static WifiP2pDnsSdServiceInfo newInstance(String instanceName,
|
||||
String serviceType, DnsSdTxtRecord txtRecord) {
|
||||
String serviceType, Map<String, String> txtMap) {
|
||||
if (TextUtils.isEmpty(instanceName) || TextUtils.isEmpty(serviceType)) {
|
||||
throw new IllegalArgumentException(
|
||||
"instance name or service type cannot be empty");
|
||||
}
|
||||
|
||||
if (txtRecord == null) {
|
||||
txtRecord = new DnsSdTxtRecord();
|
||||
DnsSdTxtRecord txtRecord = new DnsSdTxtRecord();
|
||||
if (txtMap != null) {
|
||||
for (String key : txtMap.keySet()) {
|
||||
txtRecord.set(key, txtMap.get(key));
|
||||
}
|
||||
}
|
||||
|
||||
ArrayList<String> queries = new ArrayList<String>();
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
package android.net.wifi.p2p.nsd;
|
||||
|
||||
import android.net.nsd.DnsSdTxtRecord;
|
||||
import android.net.wifi.p2p.WifiP2pDevice;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
@@ -68,7 +67,7 @@ public class WifiP2pDnsSdServiceResponse extends WifiP2pServiceResponse {
|
||||
* This field is only used when the dns type equals to
|
||||
* {@link WifiP2pDnsSdServiceInfo#DNS_TYPE_TXT}.
|
||||
*/
|
||||
private DnsSdTxtRecord mTxtRecord;
|
||||
private final HashMap<String, String> mTxtRecord = new HashMap<String, String>();
|
||||
|
||||
/**
|
||||
* Virtual memory packet.
|
||||
@@ -121,7 +120,7 @@ public class WifiP2pDnsSdServiceResponse extends WifiP2pServiceResponse {
|
||||
* Return TXT record data.
|
||||
* @return TXT record data.
|
||||
*/
|
||||
public DnsSdTxtRecord getTxtRecord() {
|
||||
public Map<String, String> getTxtRecord() {
|
||||
return mTxtRecord;
|
||||
}
|
||||
|
||||
@@ -133,8 +132,9 @@ public class WifiP2pDnsSdServiceResponse extends WifiP2pServiceResponse {
|
||||
sbuf.append(" srcAddr:").append(mDevice.deviceAddress);
|
||||
sbuf.append(" version:").append(String.format("%02x", mVersion));
|
||||
sbuf.append(" dnsName:").append(mDnsQueryName);
|
||||
if (mTxtRecord != null) {
|
||||
sbuf.append(" TxtRecord:").append(mTxtRecord);
|
||||
sbuf.append(" TxtRecord:");
|
||||
for (String key : mTxtRecord.keySet()) {
|
||||
sbuf.append(" key:").append(key).append(" value:").append(mTxtRecord.get(key));
|
||||
}
|
||||
if (mInstanceName != null) {
|
||||
sbuf.append(" InsName:").append(mInstanceName);
|
||||
@@ -205,10 +205,7 @@ public class WifiP2pDnsSdServiceResponse extends WifiP2pServiceResponse {
|
||||
mInstanceName = rData.substring(0,
|
||||
rData.length() - mDnsQueryName.length() -1);
|
||||
} else if (mDnsType == WifiP2pDnsSdServiceInfo.DNS_TYPE_TXT) {
|
||||
mTxtRecord = readTxtData(dis);
|
||||
if (mTxtRecord == null) {
|
||||
return false;
|
||||
}
|
||||
return readTxtData(dis);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
@@ -261,10 +258,9 @@ public class WifiP2pDnsSdServiceResponse extends WifiP2pServiceResponse {
|
||||
* Read TXT record data.
|
||||
*
|
||||
* @param dis
|
||||
* @return TXT record data
|
||||
* @return true if TXT data is valid
|
||||
*/
|
||||
private DnsSdTxtRecord readTxtData(DataInputStream dis) {
|
||||
DnsSdTxtRecord txtRecord = new DnsSdTxtRecord();
|
||||
private boolean readTxtData(DataInputStream dis) {
|
||||
try {
|
||||
while (dis.available() > 0) {
|
||||
int len = dis.readUnsignedByte();
|
||||
@@ -275,15 +271,15 @@ public class WifiP2pDnsSdServiceResponse extends WifiP2pServiceResponse {
|
||||
dis.readFully(data);
|
||||
String[] keyVal = new String(data).split("=");
|
||||
if (keyVal.length != 2) {
|
||||
return null;
|
||||
return false;
|
||||
}
|
||||
txtRecord.set(keyVal[0], keyVal[1]);
|
||||
mTxtRecord.put(keyVal[0], keyVal[1]);
|
||||
}
|
||||
return txtRecord;
|
||||
return true;
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user