From 1f1bcfe6a207281d05a05f0c80f8be21b8c21204 Mon Sep 17 00:00:00 2001 From: Robert Greenwalt Date: Mon, 30 Aug 2010 10:56:47 -0700 Subject: [PATCH] Rename NetworkProperties to LinkProperties Also add copy constructors and use them when giving out data. Change-Id: Id320eb8fb91d0bd250305ce7bb4f628570215615 --- ...orkProperties.java => LinkProperties.java} | 62 +++++++++++-------- core/java/android/net/ProxyProperties.java | 21 ++++--- .../android/server/ConnectivityService.java | 17 +++-- 3 files changed, 58 insertions(+), 42 deletions(-) rename core/java/android/net/{NetworkProperties.java => LinkProperties.java} (75%) diff --git a/core/java/android/net/NetworkProperties.java b/core/java/android/net/LinkProperties.java similarity index 75% rename from core/java/android/net/NetworkProperties.java rename to core/java/android/net/LinkProperties.java index 03c0a2eb5e..9cb38e38b7 100644 --- a/core/java/android/net/NetworkProperties.java +++ b/core/java/android/net/LinkProperties.java @@ -16,6 +16,7 @@ package android.net; +import android.net.ProxyProperties; import android.os.Parcelable; import android.os.Parcel; import android.util.Log; @@ -26,14 +27,14 @@ import java.net.SocketException; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; /** - * Describes the properties of a network interface or single address - * of an interface. + * Describes the properties of a network link. * TODO - consider adding optional fields like Apn and ApnType * @hide */ -public class NetworkProperties implements Parcelable { +public class LinkProperties implements Parcelable { private NetworkInterface mIface; private Collection mAddresses; @@ -41,49 +42,58 @@ public class NetworkProperties implements Parcelable { private InetAddress mGateway; private ProxyProperties mHttpProxy; - public NetworkProperties() { + public LinkProperties() { clear(); } - public synchronized void setInterface(NetworkInterface iface) { + // copy constructor instead of clone + public LinkProperties(LinkProperties source) { + mIface = source.getInterface(); + mAddresses = source.getAddresses(); + mDnses = source.getDnses(); + mGateway = source.getGateway(); + mHttpProxy = new ProxyProperties(source.getHttpProxy()); + } + + public void setInterface(NetworkInterface iface) { mIface = iface; } - public synchronized NetworkInterface getInterface() { + public NetworkInterface getInterface() { return mIface; } - public synchronized String getInterfaceName() { + public String getInterfaceName() { return (mIface == null ? null : mIface.getName()); } - public synchronized void addAddress(InetAddress address) { + public void addAddress(InetAddress address) { mAddresses.add(address); } - public synchronized Collection getAddresses() { - return mAddresses; + public Collection getAddresses() { + return Collections.unmodifiableCollection(mAddresses); } - public synchronized void addDns(InetAddress dns) { + public void addDns(InetAddress dns) { mDnses.add(dns); } - public synchronized Collection getDnses() { - return mDnses; + public Collection getDnses() { + return Collections.unmodifiableCollection(mDnses); } - public synchronized void setGateway(InetAddress gateway) { + public void setGateway(InetAddress gateway) { mGateway = gateway; } - public synchronized InetAddress getGateway() { + public InetAddress getGateway() { return mGateway; } - public synchronized void setHttpProxy(ProxyProperties proxy) { + public void setHttpProxy(ProxyProperties proxy) { mHttpProxy = proxy; } - public synchronized ProxyProperties getHttpProxy() { + public ProxyProperties getHttpProxy() { return mHttpProxy; } - public synchronized void clear() { + public void clear() { mIface = null; mAddresses = new ArrayList(); mDnses = new ArrayList(); @@ -100,7 +110,7 @@ public class NetworkProperties implements Parcelable { } @Override - public synchronized String toString() { + public String toString() { String ifaceName = (mIface == null ? "" : "InterfaceName: " + mIface.getName() + " "); String ip = "IpAddresses: ["; @@ -121,7 +131,7 @@ public class NetworkProperties implements Parcelable { * Implement the Parcelable interface. * @hide */ - public synchronized void writeToParcel(Parcel dest, int flags) { + public void writeToParcel(Parcel dest, int flags) { dest.writeString(getInterfaceName()); dest.writeInt(mAddresses.size()); //TODO: explore an easy alternative to preserve hostname @@ -151,10 +161,10 @@ public class NetworkProperties implements Parcelable { * Implement the Parcelable interface. * @hide */ - public static final Creator CREATOR = - new Creator() { - public NetworkProperties createFromParcel(Parcel in) { - NetworkProperties netProp = new NetworkProperties(); + public static final Creator CREATOR = + new Creator() { + public LinkProperties createFromParcel(Parcel in) { + LinkProperties netProp = new LinkProperties(); String iface = in.readString(); if (iface != null) { try { @@ -186,8 +196,8 @@ public class NetworkProperties implements Parcelable { return netProp; } - public NetworkProperties[] newArray(int size) { - return new NetworkProperties[size]; + public LinkProperties[] newArray(int size) { + return new LinkProperties[size]; } }; } diff --git a/core/java/android/net/ProxyProperties.java b/core/java/android/net/ProxyProperties.java index 207fb5134a..24f6766d6d 100644 --- a/core/java/android/net/ProxyProperties.java +++ b/core/java/android/net/ProxyProperties.java @@ -36,24 +36,31 @@ public class ProxyProperties implements Parcelable { public ProxyProperties() { } - public synchronized InetAddress getAddress() { + // copy constructor instead of clone + public ProxyProperties(ProxyProperties source) { + mProxy = source.getAddress(); + mPort = source.getPort(); + mExclusionList = new String(source.getExclusionList()); + } + + public InetAddress getAddress() { return mProxy; } - public synchronized void setAddress(InetAddress proxy) { + public void setAddress(InetAddress proxy) { mProxy = proxy; } - public synchronized int getPort() { + public int getPort() { return mPort; } - public synchronized void setPort(int port) { + public void setPort(int port) { mPort = port; } - public synchronized String getExclusionList() { + public String getExclusionList() { return mExclusionList; } - public synchronized void setExclusionList(String exclusionList) { + public void setExclusionList(String exclusionList) { mExclusionList = exclusionList; } @@ -77,7 +84,7 @@ public class ProxyProperties implements Parcelable { * Implement the Parcelable interface. * @hide */ - public synchronized void writeToParcel(Parcel dest, int flags) { + public void writeToParcel(Parcel dest, int flags) { if (mProxy != null) { dest.writeByte((byte)1); dest.writeString(mProxy.getHostName()); diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index 57e8e021fe..6f23805c0e 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -26,7 +26,7 @@ import android.net.ConnectivityManager; import android.net.IConnectivityManager; import android.net.MobileDataStateTracker; import android.net.NetworkInfo; -import android.net.NetworkProperties; +import android.net.LinkProperties; import android.net.NetworkStateTracker; import android.net.NetworkUtils; import android.net.wifi.WifiStateTracker; @@ -756,7 +756,6 @@ public class ConnectivityService extends IConnectivityManager.Stub { * specified host is to be routed * @param hostAddress the IP address of the host to which the route is * desired - * todo - deprecate (only v4!) * @return {@code true} on success, {@code false} on failure */ public boolean requestRouteToHost(int networkType, int hostAddress) { @@ -813,7 +812,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { return false; } - NetworkProperties p = nt.getNetworkProperties(); + LinkProperties p = nt.getLinkProperties(); if (p == null) return false; String interfaceName = p.getInterfaceName(); @@ -1258,7 +1257,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { private void addPrivateDnsRoutes(NetworkStateTracker nt) { boolean privateDnsRouteSet = nt.isPrivateDnsRouteSet(); - NetworkProperties p = nt.getNetworkProperties(); + LinkProperties p = nt.getLinkProperties(); if (p == null) return; String interfaceName = p.getInterfaceName(); @@ -1279,7 +1278,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { private void removePrivateDnsRoutes(NetworkStateTracker nt) { // TODO - we should do this explicitly but the NetUtils api doesnt // support this yet - must remove all. No worse than before - NetworkProperties p = nt.getNetworkProperties(); + LinkProperties p = nt.getLinkProperties(); if (p == null) return; String interfaceName = p.getInterfaceName(); boolean privateDnsRouteSet = nt.isPrivateDnsRouteSet(); @@ -1295,7 +1294,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { private void addDefaultRoute(NetworkStateTracker nt) { - NetworkProperties p = nt.getNetworkProperties(); + LinkProperties p = nt.getLinkProperties(); if (p == null) return; String interfaceName = p.getInterfaceName(); InetAddress defaultGatewayAddr = p.getGateway(); @@ -1311,7 +1310,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { public void removeDefaultRoute(NetworkStateTracker nt) { - NetworkProperties p = nt.getNetworkProperties(); + LinkProperties p = nt.getLinkProperties(); if (p == null) return; String interfaceName = p.getInterfaceName(); @@ -1410,7 +1409,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { NetworkStateTracker nt = mNetTrackers[i]; if (nt.getNetworkInfo().isConnected() && !nt.isTeardownRequested()) { - NetworkProperties p = nt.getNetworkProperties(); + LinkProperties p = nt.getLinkProperties(); if (p == null) continue; List pids = mNetRequestersPids[i]; for (int j=0; j dnses = p.getDnses(); if (mNetAttributes[netType].isDefault()) {