diff options
author | Stan Chesnutt <chesnutt@google.com> | 2011-01-03 08:43:57 -0800 |
---|---|---|
committer | Stan Chesnutt <chesnutt@google.com> | 2011-01-07 11:40:33 -0800 |
commit | 780dfa42aa8664afa53c30ae669fc0e1f10f6537 (patch) | |
tree | c5c852f6b798d6ad9a2c10dbfb6601bbb3144ec3 | |
parent | a78060345b80ca6e6d3571cdd7afb4a997e709b0 (diff) | |
download | frameworks_base-780dfa42aa8664afa53c30ae669fc0e1f10f6537.zip frameworks_base-780dfa42aa8664afa53c30ae669fc0e1f10f6537.tar.gz frameworks_base-780dfa42aa8664afa53c30ae669fc0e1f10f6537.tar.bz2 |
Propagate new link-status-change message to any NetworkManagementService
observers. Also fix the syntax of the "interface-status-change" message. Add
a null handler in the ThrottleService and Tethering classes (plus fix names).
Change-Id: I58cabc7b0ce5662243bc6513b2de4818065e6c52
4 files changed, 43 insertions, 11 deletions
diff --git a/core/java/android/net/INetworkManagementEventObserver.aidl b/core/java/android/net/INetworkManagementEventObserver.aidl index d30b63d..6cea187 100644 --- a/core/java/android/net/INetworkManagementEventObserver.aidl +++ b/core/java/android/net/INetworkManagementEventObserver.aidl @@ -23,12 +23,21 @@ package android.net; */ interface INetworkManagementEventObserver { /** - * Interface link status has changed. + * Interface configuration status has changed. * * @param iface The interface. - * @param link True if link is up. + * @param up True if the interface has been enabled. */ - void interfaceLinkStatusChanged(String iface, boolean link); + void interfaceStatusChanged(String iface, boolean up); + + /** + * Interface physical-layer link status has changed. For Ethernet, + * this method is invoked when the cable is plugged in or unplugged. + * + * @param iface The interface. + * @param up True if the physical link-layer connection signal is valid. + */ + void interfaceLinkStateChanged(String iface, boolean up); /** * An interface has been added to the system diff --git a/services/java/com/android/server/NetworkManagementService.java b/services/java/com/android/server/NetworkManagementService.java index 152605f..08970d1 100644 --- a/services/java/com/android/server/NetworkManagementService.java +++ b/services/java/com/android/server/NetworkManagementService.java @@ -131,12 +131,26 @@ class NetworkManagementService extends INetworkManagementService.Stub { } /** - * Notify our observers of an interface link status change + * Notify our observers of an interface status change */ - private void notifyInterfaceLinkStatusChanged(String iface, boolean link) { + private void notifyInterfaceStatusChanged(String iface, boolean up) { for (INetworkManagementEventObserver obs : mObservers) { try { - obs.interfaceLinkStatusChanged(iface, link); + obs.interfaceStatusChanged(iface, up); + } catch (Exception ex) { + Slog.w(TAG, "Observer notifier failed", ex); + } + } + } + + /** + * Notify our observers of an interface link status change. + * (typically, an Ethernet cable has been plugged-in or unplugged). + */ + private void notifyInterfaceLinkStateChanged(String iface, boolean up) { + for (INetworkManagementEventObserver obs : mObservers) { + try { + obs.interfaceLinkStateChanged(iface, up); } catch (Exception ex) { Slog.w(TAG, "Observer notifier failed", ex); } @@ -197,6 +211,7 @@ class NetworkManagementService extends INetworkManagementService.Stub { * Format: "NNN Iface added <name>" * "NNN Iface removed <name>" * "NNN Iface changed <name> <up/down>" + * "NNN Iface linkstatus <name> <up/down>" */ if (cooked.length < 4 || !cooked[1].equals("Iface")) { throw new IllegalStateException( @@ -209,7 +224,10 @@ class NetworkManagementService extends INetworkManagementService.Stub { notifyInterfaceRemoved(cooked[3]); return true; } else if (cooked[2].equals("changed") && cooked.length == 5) { - notifyInterfaceLinkStatusChanged(cooked[3], cooked[4].equals("up")); + notifyInterfaceStatusChanged(cooked[3], cooked[4].equals("up")); + return true; + } else if (cooked[2].equals("linkstatus") && cooked.length == 5) { + notifyInterfaceLinkStateChanged(cooked[3], cooked[4].equals("up")); return true; } throw new IllegalStateException( diff --git a/services/java/com/android/server/ThrottleService.java b/services/java/com/android/server/ThrottleService.java index d841cb3..ccfc99b 100644 --- a/services/java/com/android/server/ThrottleService.java +++ b/services/java/com/android/server/ThrottleService.java @@ -160,7 +160,7 @@ public class ThrottleService extends IThrottleManager.Stub { mIface = iface; } - public void interfaceLinkStatusChanged(String iface, boolean link) { + public void interfaceStatusChanged(String iface, boolean link) { if (link) { if (TextUtils.equals(iface, mIface)) { mHandler.obtainMessage(mMsg).sendToTarget(); @@ -176,6 +176,8 @@ public class ThrottleService extends IThrottleManager.Stub { } } + public void interfaceLinkStateChanged(String iface, boolean linkState) {} + public void interfaceRemoved(String iface) {} } diff --git a/services/java/com/android/server/connectivity/Tethering.java b/services/java/com/android/server/connectivity/Tethering.java index fc1b2c4..60e8264 100644 --- a/services/java/com/android/server/connectivity/Tethering.java +++ b/services/java/com/android/server/connectivity/Tethering.java @@ -202,8 +202,11 @@ public class Tethering extends INetworkManagementEventObserver.Stub { mDnsServers[1] = DNS_DEFAULT_SERVER2; } - public void interfaceLinkStatusChanged(String iface, boolean link) { - if (DEBUG) Log.d(TAG, "interfaceLinkStatusChanged " + iface + ", " + link); + public void interfaceLinkStateChanged(String iface, boolean up) { + } + + public void interfaceStatusChanged(String iface, boolean up) { + if (DEBUG) Log.d(TAG, "interfaceStatusChanged " + iface + ", " + up); boolean found = false; boolean usb = false; if (isWifi(iface)) { @@ -218,7 +221,7 @@ public class Tethering extends INetworkManagementEventObserver.Stub { synchronized (mIfaces) { TetherInterfaceSM sm = mIfaces.get(iface); - if (link) { + if (up) { if (sm == null) { sm = new TetherInterfaceSM(iface, mLooper, usb); mIfaces.put(iface, sm); |