Merge "Use Map for DnsSd TXT record" into jb-dev

This commit is contained in:
Irfan Sheriff
2012-05-09 16:37:11 -07:00
committed by Android (Google) Code Review
5 changed files with 25 additions and 41 deletions

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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);
}

View File

@@ -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>();

View File

@@ -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;
}
/**