From 527ba07b637cedf206fec0d3b0cf92141700a23c Mon Sep 17 00:00:00 2001 From: Irfan Sheriff Date: Wed, 9 May 2012 14:15:04 -0700 Subject: Use Map for DnsSd TXT record Bug: 6434844 Change-Id: I767077585f501b46026ed34ec3e778d3e53209cc --- wifi/java/android/net/wifi/p2p/WifiP2pManager.java | 6 ++--- .../net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo.java | 11 +++++---- .../wifi/p2p/nsd/WifiP2pDnsSdServiceResponse.java | 28 ++++++++++------------ 3 files changed, 22 insertions(+), 23 deletions(-) (limited to 'wifi/java/android/net') diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pManager.java b/wifi/java/android/net/wifi/p2p/WifiP2pManager.java index ef77d45..2c25e9d 100644 --- a/wifi/java/android/net/wifi/p2p/WifiP2pManager.java +++ b/wifi/java/android/net/wifi/p2p/WifiP2pManager.java @@ -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.
* 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 txtRecordMap, WifiP2pDevice srcDevice); } diff --git a/wifi/java/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo.java b/wifi/java/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo.java index 54b7ac4..bc1d3c6 100644 --- a/wifi/java/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo.java +++ b/wifi/java/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo.java @@ -83,19 +83,22 @@ public class WifiP2pDnsSdServiceInfo extends WifiP2pServiceInfo { * e.g) "MyPrinter" * @param serviceType service type.
* 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 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 queries = new ArrayList(); diff --git a/wifi/java/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse.java b/wifi/java/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse.java index c053c8a..ed84a1a 100644 --- a/wifi/java/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse.java +++ b/wifi/java/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse.java @@ -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 mTxtRecord = new HashMap(); /** * 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 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; } /** -- cgit v1.1