Loading services/core/java/com/android/server/NetworkManagementService.java +99 −65 Original line number Original line Diff line number Diff line Loading @@ -153,7 +153,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub */ */ private NativeDaemonConnector mConnector; private NativeDaemonConnector mConnector; private final Handler mMainHandler = new Handler(); private final Handler mFgHandler; private IBatteryStats mBatteryStats; private IBatteryStats mBatteryStats; Loading Loading @@ -203,6 +203,9 @@ public class NetworkManagementService extends INetworkManagementService.Stub private NetworkManagementService(Context context, String socket) { private NetworkManagementService(Context context, String socket) { mContext = context; mContext = context; // make sure this is on the same looper as our NativeDaemonConnector for sync purposes mFgHandler = new Handler(FgThread.get().getLooper()); if ("simulator".equals(SystemProperties.get("ro.product.device"))) { if ("simulator".equals(SystemProperties.get("ro.product.device"))) { return; return; } } Loading Loading @@ -271,6 +274,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub */ */ private void notifyInterfaceStatusChanged(String iface, boolean up) { private void notifyInterfaceStatusChanged(String iface, boolean up) { final int length = mObservers.beginBroadcast(); final int length = mObservers.beginBroadcast(); try { for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) { try { try { mObservers.getBroadcastItem(i).interfaceStatusChanged(iface, up); mObservers.getBroadcastItem(i).interfaceStatusChanged(iface, up); Loading @@ -278,8 +282,10 @@ public class NetworkManagementService extends INetworkManagementService.Stub } catch (RuntimeException e) { } catch (RuntimeException e) { } } } } } finally { mObservers.finishBroadcast(); mObservers.finishBroadcast(); } } } /** /** * Notify our observers of an interface link state change * Notify our observers of an interface link state change Loading @@ -287,6 +293,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub */ */ private void notifyInterfaceLinkStateChanged(String iface, boolean up) { private void notifyInterfaceLinkStateChanged(String iface, boolean up) { final int length = mObservers.beginBroadcast(); final int length = mObservers.beginBroadcast(); try { for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) { try { try { mObservers.getBroadcastItem(i).interfaceLinkStateChanged(iface, up); mObservers.getBroadcastItem(i).interfaceLinkStateChanged(iface, up); Loading @@ -294,14 +301,17 @@ public class NetworkManagementService extends INetworkManagementService.Stub } catch (RuntimeException e) { } catch (RuntimeException e) { } } } } } finally { mObservers.finishBroadcast(); mObservers.finishBroadcast(); } } } /** /** * Notify our observers of an interface addition. * Notify our observers of an interface addition. */ */ private void notifyInterfaceAdded(String iface) { private void notifyInterfaceAdded(String iface) { final int length = mObservers.beginBroadcast(); final int length = mObservers.beginBroadcast(); try { for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) { try { try { mObservers.getBroadcastItem(i).interfaceAdded(iface); mObservers.getBroadcastItem(i).interfaceAdded(iface); Loading @@ -309,8 +319,10 @@ public class NetworkManagementService extends INetworkManagementService.Stub } catch (RuntimeException e) { } catch (RuntimeException e) { } } } } } finally { mObservers.finishBroadcast(); mObservers.finishBroadcast(); } } } /** /** * Notify our observers of an interface removal. * Notify our observers of an interface removal. Loading @@ -322,6 +334,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub mActiveQuotas.remove(iface); mActiveQuotas.remove(iface); final int length = mObservers.beginBroadcast(); final int length = mObservers.beginBroadcast(); try { for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) { try { try { mObservers.getBroadcastItem(i).interfaceRemoved(iface); mObservers.getBroadcastItem(i).interfaceRemoved(iface); Loading @@ -329,14 +342,17 @@ public class NetworkManagementService extends INetworkManagementService.Stub } catch (RuntimeException e) { } catch (RuntimeException e) { } } } } } finally { mObservers.finishBroadcast(); mObservers.finishBroadcast(); } } } /** /** * Notify our observers of a limit reached. * Notify our observers of a limit reached. */ */ private void notifyLimitReached(String limitName, String iface) { private void notifyLimitReached(String limitName, String iface) { final int length = mObservers.beginBroadcast(); final int length = mObservers.beginBroadcast(); try { for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) { try { try { mObservers.getBroadcastItem(i).limitReached(limitName, iface); mObservers.getBroadcastItem(i).limitReached(limitName, iface); Loading @@ -344,8 +360,10 @@ public class NetworkManagementService extends INetworkManagementService.Stub } catch (RuntimeException e) { } catch (RuntimeException e) { } } } } } finally { mObservers.finishBroadcast(); mObservers.finishBroadcast(); } } } /** /** * Notify our observers of a change in the data activity state of the interface * Notify our observers of a change in the data activity state of the interface Loading @@ -357,6 +375,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub } } final int length = mObservers.beginBroadcast(); final int length = mObservers.beginBroadcast(); try { for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) { try { try { mObservers.getBroadcastItem(i).interfaceClassDataActivityChanged( mObservers.getBroadcastItem(i).interfaceClassDataActivityChanged( Loading @@ -365,7 +384,9 @@ public class NetworkManagementService extends INetworkManagementService.Stub } catch (RuntimeException e) { } catch (RuntimeException e) { } } } } } finally { mObservers.finishBroadcast(); mObservers.finishBroadcast(); } boolean report = false; boolean report = false; synchronized (mIdleTimerLock) { synchronized (mIdleTimerLock) { Loading Loading @@ -456,6 +477,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub */ */ private void notifyAddressUpdated(String iface, LinkAddress address) { private void notifyAddressUpdated(String iface, LinkAddress address) { final int length = mObservers.beginBroadcast(); final int length = mObservers.beginBroadcast(); try { for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) { try { try { mObservers.getBroadcastItem(i).addressUpdated(iface, address); mObservers.getBroadcastItem(i).addressUpdated(iface, address); Loading @@ -463,14 +485,17 @@ public class NetworkManagementService extends INetworkManagementService.Stub } catch (RuntimeException e) { } catch (RuntimeException e) { } } } } } finally { mObservers.finishBroadcast(); mObservers.finishBroadcast(); } } } /** /** * Notify our observers of a deleted interface address. * Notify our observers of a deleted interface address. */ */ private void notifyAddressRemoved(String iface, LinkAddress address) { private void notifyAddressRemoved(String iface, LinkAddress address) { final int length = mObservers.beginBroadcast(); final int length = mObservers.beginBroadcast(); try { for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) { try { try { mObservers.getBroadcastItem(i).addressRemoved(iface, address); mObservers.getBroadcastItem(i).addressRemoved(iface, address); Loading @@ -478,23 +503,29 @@ public class NetworkManagementService extends INetworkManagementService.Stub } catch (RuntimeException e) { } catch (RuntimeException e) { } } } } } finally { mObservers.finishBroadcast(); mObservers.finishBroadcast(); } } } /** /** * Notify our observers of DNS server information received. * Notify our observers of DNS server information received. */ */ private void notifyInterfaceDnsServerInfo(String iface, long lifetime, String[] addresses) { private void notifyInterfaceDnsServerInfo(String iface, long lifetime, String[] addresses) { final int length = mObservers.beginBroadcast(); final int length = mObservers.beginBroadcast(); try { for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) { try { try { mObservers.getBroadcastItem(i).interfaceDnsServerInfo(iface, lifetime, addresses); mObservers.getBroadcastItem(i).interfaceDnsServerInfo(iface, lifetime, addresses); } catch (RemoteException e) { } catch (RemoteException e) { } catch (RuntimeException e) { } catch (RuntimeException e) { } } } } } finally { mObservers.finishBroadcast(); mObservers.finishBroadcast(); } } } // // // Netd Callback handling // Netd Callback handling Loading @@ -509,7 +540,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub mConnectedSignal.countDown(); mConnectedSignal.countDown(); mConnectedSignal = null; mConnectedSignal = null; } else { } else { mMainHandler.post(new Runnable() { mFgHandler.post(new Runnable() { @Override @Override public void run() { public void run() { prepareNativeDaemon(); prepareNativeDaemon(); Loading Loading @@ -1270,7 +1301,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub if (ConnectivityManager.isNetworkTypeMobile(type)) { if (ConnectivityManager.isNetworkTypeMobile(type)) { mNetworkActive = false; mNetworkActive = false; } } mMainHandler.post(new Runnable() { mFgHandler.post(new Runnable() { @Override public void run() { @Override public void run() { notifyInterfaceClassActivity(type, true, SystemClock.elapsedRealtimeNanos()); notifyInterfaceClassActivity(type, true, SystemClock.elapsedRealtimeNanos()); } } Loading @@ -1297,7 +1328,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub throw e.rethrowAsParcelableException(); throw e.rethrowAsParcelableException(); } } mActiveIdleTimers.remove(iface); mActiveIdleTimers.remove(iface); mMainHandler.post(new Runnable() { mFgHandler.post(new Runnable() { @Override public void run() { @Override public void run() { notifyInterfaceClassActivity(params.type, false, notifyInterfaceClassActivity(params.type, false, SystemClock.elapsedRealtimeNanos()); SystemClock.elapsedRealtimeNanos()); Loading Loading @@ -1880,6 +1911,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub private void reportNetworkActive() { private void reportNetworkActive() { final int length = mNetworkActivityListeners.beginBroadcast(); final int length = mNetworkActivityListeners.beginBroadcast(); try { for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) { try { try { mNetworkActivityListeners.getBroadcastItem(i).onNetworkActive(); mNetworkActivityListeners.getBroadcastItem(i).onNetworkActive(); Loading @@ -1887,8 +1919,10 @@ public class NetworkManagementService extends INetworkManagementService.Stub } catch (RuntimeException e) { } catch (RuntimeException e) { } } } } } finally { mNetworkActivityListeners.finishBroadcast(); mNetworkActivityListeners.finishBroadcast(); } } } /** {@inheritDoc} */ /** {@inheritDoc} */ @Override @Override Loading Loading
services/core/java/com/android/server/NetworkManagementService.java +99 −65 Original line number Original line Diff line number Diff line Loading @@ -153,7 +153,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub */ */ private NativeDaemonConnector mConnector; private NativeDaemonConnector mConnector; private final Handler mMainHandler = new Handler(); private final Handler mFgHandler; private IBatteryStats mBatteryStats; private IBatteryStats mBatteryStats; Loading Loading @@ -203,6 +203,9 @@ public class NetworkManagementService extends INetworkManagementService.Stub private NetworkManagementService(Context context, String socket) { private NetworkManagementService(Context context, String socket) { mContext = context; mContext = context; // make sure this is on the same looper as our NativeDaemonConnector for sync purposes mFgHandler = new Handler(FgThread.get().getLooper()); if ("simulator".equals(SystemProperties.get("ro.product.device"))) { if ("simulator".equals(SystemProperties.get("ro.product.device"))) { return; return; } } Loading Loading @@ -271,6 +274,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub */ */ private void notifyInterfaceStatusChanged(String iface, boolean up) { private void notifyInterfaceStatusChanged(String iface, boolean up) { final int length = mObservers.beginBroadcast(); final int length = mObservers.beginBroadcast(); try { for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) { try { try { mObservers.getBroadcastItem(i).interfaceStatusChanged(iface, up); mObservers.getBroadcastItem(i).interfaceStatusChanged(iface, up); Loading @@ -278,8 +282,10 @@ public class NetworkManagementService extends INetworkManagementService.Stub } catch (RuntimeException e) { } catch (RuntimeException e) { } } } } } finally { mObservers.finishBroadcast(); mObservers.finishBroadcast(); } } } /** /** * Notify our observers of an interface link state change * Notify our observers of an interface link state change Loading @@ -287,6 +293,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub */ */ private void notifyInterfaceLinkStateChanged(String iface, boolean up) { private void notifyInterfaceLinkStateChanged(String iface, boolean up) { final int length = mObservers.beginBroadcast(); final int length = mObservers.beginBroadcast(); try { for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) { try { try { mObservers.getBroadcastItem(i).interfaceLinkStateChanged(iface, up); mObservers.getBroadcastItem(i).interfaceLinkStateChanged(iface, up); Loading @@ -294,14 +301,17 @@ public class NetworkManagementService extends INetworkManagementService.Stub } catch (RuntimeException e) { } catch (RuntimeException e) { } } } } } finally { mObservers.finishBroadcast(); mObservers.finishBroadcast(); } } } /** /** * Notify our observers of an interface addition. * Notify our observers of an interface addition. */ */ private void notifyInterfaceAdded(String iface) { private void notifyInterfaceAdded(String iface) { final int length = mObservers.beginBroadcast(); final int length = mObservers.beginBroadcast(); try { for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) { try { try { mObservers.getBroadcastItem(i).interfaceAdded(iface); mObservers.getBroadcastItem(i).interfaceAdded(iface); Loading @@ -309,8 +319,10 @@ public class NetworkManagementService extends INetworkManagementService.Stub } catch (RuntimeException e) { } catch (RuntimeException e) { } } } } } finally { mObservers.finishBroadcast(); mObservers.finishBroadcast(); } } } /** /** * Notify our observers of an interface removal. * Notify our observers of an interface removal. Loading @@ -322,6 +334,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub mActiveQuotas.remove(iface); mActiveQuotas.remove(iface); final int length = mObservers.beginBroadcast(); final int length = mObservers.beginBroadcast(); try { for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) { try { try { mObservers.getBroadcastItem(i).interfaceRemoved(iface); mObservers.getBroadcastItem(i).interfaceRemoved(iface); Loading @@ -329,14 +342,17 @@ public class NetworkManagementService extends INetworkManagementService.Stub } catch (RuntimeException e) { } catch (RuntimeException e) { } } } } } finally { mObservers.finishBroadcast(); mObservers.finishBroadcast(); } } } /** /** * Notify our observers of a limit reached. * Notify our observers of a limit reached. */ */ private void notifyLimitReached(String limitName, String iface) { private void notifyLimitReached(String limitName, String iface) { final int length = mObservers.beginBroadcast(); final int length = mObservers.beginBroadcast(); try { for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) { try { try { mObservers.getBroadcastItem(i).limitReached(limitName, iface); mObservers.getBroadcastItem(i).limitReached(limitName, iface); Loading @@ -344,8 +360,10 @@ public class NetworkManagementService extends INetworkManagementService.Stub } catch (RuntimeException e) { } catch (RuntimeException e) { } } } } } finally { mObservers.finishBroadcast(); mObservers.finishBroadcast(); } } } /** /** * Notify our observers of a change in the data activity state of the interface * Notify our observers of a change in the data activity state of the interface Loading @@ -357,6 +375,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub } } final int length = mObservers.beginBroadcast(); final int length = mObservers.beginBroadcast(); try { for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) { try { try { mObservers.getBroadcastItem(i).interfaceClassDataActivityChanged( mObservers.getBroadcastItem(i).interfaceClassDataActivityChanged( Loading @@ -365,7 +384,9 @@ public class NetworkManagementService extends INetworkManagementService.Stub } catch (RuntimeException e) { } catch (RuntimeException e) { } } } } } finally { mObservers.finishBroadcast(); mObservers.finishBroadcast(); } boolean report = false; boolean report = false; synchronized (mIdleTimerLock) { synchronized (mIdleTimerLock) { Loading Loading @@ -456,6 +477,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub */ */ private void notifyAddressUpdated(String iface, LinkAddress address) { private void notifyAddressUpdated(String iface, LinkAddress address) { final int length = mObservers.beginBroadcast(); final int length = mObservers.beginBroadcast(); try { for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) { try { try { mObservers.getBroadcastItem(i).addressUpdated(iface, address); mObservers.getBroadcastItem(i).addressUpdated(iface, address); Loading @@ -463,14 +485,17 @@ public class NetworkManagementService extends INetworkManagementService.Stub } catch (RuntimeException e) { } catch (RuntimeException e) { } } } } } finally { mObservers.finishBroadcast(); mObservers.finishBroadcast(); } } } /** /** * Notify our observers of a deleted interface address. * Notify our observers of a deleted interface address. */ */ private void notifyAddressRemoved(String iface, LinkAddress address) { private void notifyAddressRemoved(String iface, LinkAddress address) { final int length = mObservers.beginBroadcast(); final int length = mObservers.beginBroadcast(); try { for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) { try { try { mObservers.getBroadcastItem(i).addressRemoved(iface, address); mObservers.getBroadcastItem(i).addressRemoved(iface, address); Loading @@ -478,23 +503,29 @@ public class NetworkManagementService extends INetworkManagementService.Stub } catch (RuntimeException e) { } catch (RuntimeException e) { } } } } } finally { mObservers.finishBroadcast(); mObservers.finishBroadcast(); } } } /** /** * Notify our observers of DNS server information received. * Notify our observers of DNS server information received. */ */ private void notifyInterfaceDnsServerInfo(String iface, long lifetime, String[] addresses) { private void notifyInterfaceDnsServerInfo(String iface, long lifetime, String[] addresses) { final int length = mObservers.beginBroadcast(); final int length = mObservers.beginBroadcast(); try { for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) { try { try { mObservers.getBroadcastItem(i).interfaceDnsServerInfo(iface, lifetime, addresses); mObservers.getBroadcastItem(i).interfaceDnsServerInfo(iface, lifetime, addresses); } catch (RemoteException e) { } catch (RemoteException e) { } catch (RuntimeException e) { } catch (RuntimeException e) { } } } } } finally { mObservers.finishBroadcast(); mObservers.finishBroadcast(); } } } // // // Netd Callback handling // Netd Callback handling Loading @@ -509,7 +540,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub mConnectedSignal.countDown(); mConnectedSignal.countDown(); mConnectedSignal = null; mConnectedSignal = null; } else { } else { mMainHandler.post(new Runnable() { mFgHandler.post(new Runnable() { @Override @Override public void run() { public void run() { prepareNativeDaemon(); prepareNativeDaemon(); Loading Loading @@ -1270,7 +1301,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub if (ConnectivityManager.isNetworkTypeMobile(type)) { if (ConnectivityManager.isNetworkTypeMobile(type)) { mNetworkActive = false; mNetworkActive = false; } } mMainHandler.post(new Runnable() { mFgHandler.post(new Runnable() { @Override public void run() { @Override public void run() { notifyInterfaceClassActivity(type, true, SystemClock.elapsedRealtimeNanos()); notifyInterfaceClassActivity(type, true, SystemClock.elapsedRealtimeNanos()); } } Loading @@ -1297,7 +1328,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub throw e.rethrowAsParcelableException(); throw e.rethrowAsParcelableException(); } } mActiveIdleTimers.remove(iface); mActiveIdleTimers.remove(iface); mMainHandler.post(new Runnable() { mFgHandler.post(new Runnable() { @Override public void run() { @Override public void run() { notifyInterfaceClassActivity(params.type, false, notifyInterfaceClassActivity(params.type, false, SystemClock.elapsedRealtimeNanos()); SystemClock.elapsedRealtimeNanos()); Loading Loading @@ -1880,6 +1911,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub private void reportNetworkActive() { private void reportNetworkActive() { final int length = mNetworkActivityListeners.beginBroadcast(); final int length = mNetworkActivityListeners.beginBroadcast(); try { for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) { try { try { mNetworkActivityListeners.getBroadcastItem(i).onNetworkActive(); mNetworkActivityListeners.getBroadcastItem(i).onNetworkActive(); Loading @@ -1887,8 +1919,10 @@ public class NetworkManagementService extends INetworkManagementService.Stub } catch (RuntimeException e) { } catch (RuntimeException e) { } } } } } finally { mNetworkActivityListeners.finishBroadcast(); mNetworkActivityListeners.finishBroadcast(); } } } /** {@inheritDoc} */ /** {@inheritDoc} */ @Override @Override Loading