Loading services/java/com/android/server/NativeDaemonConnector.java +6 −2 Original line number Diff line number Diff line Loading @@ -181,7 +181,8 @@ final class NativeDaemonConnector implements Runnable { } } private void sendCommand(String command) { private void sendCommand(String command) throws NativeDaemonConnectorException { sendCommand(command, null); } Loading @@ -191,11 +192,13 @@ final class NativeDaemonConnector implements Runnable { * @param command The command to send to the daemon * @param argument The argument to send with the command (or null) */ private void sendCommand(String command, String argument) { private void sendCommand(String command, String argument) throws NativeDaemonConnectorException { synchronized (this) { if (LOCAL_LOGD) Slog.d(TAG, String.format("SND -> {%s} {%s}", command, argument)); if (mOutputStream == null) { Slog.e(TAG, "No connection to daemon", new IllegalStateException()); throw new NativeDaemonConnectorException("No output stream!"); } else { StringBuilder builder = new StringBuilder(command); if (argument != null) { Loading Loading @@ -226,6 +229,7 @@ final class NativeDaemonConnector implements Runnable { while (!complete) { try { // TODO - this should not block forever String line = mResponseQueue.take(); if (LOCAL_LOGD) Slog.d(TAG, String.format("RSP <- {%s}", line)); String[] tokens = line.split(" "); Loading services/java/com/android/server/NetworkManagementService.java +26 −5 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ import java.lang.IllegalStateException; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.concurrent.CountDownLatch; /** * @hide Loading @@ -54,7 +55,7 @@ import java.net.UnknownHostException; class NetworkManagementService extends INetworkManagementService.Stub { private static final String TAG = "NetworkManagmentService"; private static final boolean DBG = true; private static final String NETD_TAG = "NetdConnector"; class NetdResponseCode { Loading Loading @@ -86,6 +87,9 @@ class NetworkManagementService extends INetworkManagementService.Stub { */ private NativeDaemonConnector mConnector; private Thread mThread; private final CountDownLatch mConnectedSignal = new CountDownLatch(1); private ArrayList<INetworkManagementEventObserver> mObservers; /** Loading @@ -93,9 +97,8 @@ class NetworkManagementService extends INetworkManagementService.Stub { * * @param context Binder context for this service */ public NetworkManagementService(Context context) { private NetworkManagementService(Context context) { mContext = context; mObservers = new ArrayList<INetworkManagementEventObserver>(); if ("simulator".equals(SystemProperties.get("ro.product.device"))) { Loading @@ -104,8 +107,17 @@ class NetworkManagementService extends INetworkManagementService.Stub { mConnector = new NativeDaemonConnector( new NetdCallbackReceiver(), "netd", 10, NETD_TAG); Thread thread = new Thread(mConnector, NETD_TAG); thread.start(); mThread = new Thread(mConnector, NETD_TAG); } public static NetworkManagementService create(Context context) throws InterruptedException { NetworkManagementService service = new NetworkManagementService(context); if (DBG) Slog.d(TAG, "Creating NetworkManagementService"); service.mThread.start(); if (DBG) Slog.d(TAG, "Awaiting socket connection"); service.mConnectedSignal.await(); if (DBG) Slog.d(TAG, "Connected"); return service; } public void registerObserver(INetworkManagementEventObserver obs) { Loading Loading @@ -157,6 +169,14 @@ class NetworkManagementService extends INetworkManagementService.Stub { } } /** * Let us know the daemon is connected */ protected void onConnected() { if (DBG) Slog.d(TAG, "onConnected"); mConnectedSignal.countDown(); } // // Netd Callback handling Loading @@ -164,6 +184,7 @@ class NetworkManagementService extends INetworkManagementService.Stub { class NetdCallbackReceiver implements INativeDaemonConnectorCallbacks { public void onDaemonConnected() { NetworkManagementService.this.onConnected(); new Thread() { public void run() { } Loading services/java/com/android/server/SystemServer.java +2 −1 Original line number Diff line number Diff line Loading @@ -255,7 +255,8 @@ class ServerThread extends Thread { try { Slog.i(TAG, "NetworkManagement Service"); ServiceManager.addService( Context.NETWORKMANAGEMENT_SERVICE, new NetworkManagementService(context)); Context.NETWORKMANAGEMENT_SERVICE, NetworkManagementService.create(context)); } catch (Throwable e) { Slog.e(TAG, "Failure starting NetworkManagement Service", e); } Loading Loading
services/java/com/android/server/NativeDaemonConnector.java +6 −2 Original line number Diff line number Diff line Loading @@ -181,7 +181,8 @@ final class NativeDaemonConnector implements Runnable { } } private void sendCommand(String command) { private void sendCommand(String command) throws NativeDaemonConnectorException { sendCommand(command, null); } Loading @@ -191,11 +192,13 @@ final class NativeDaemonConnector implements Runnable { * @param command The command to send to the daemon * @param argument The argument to send with the command (or null) */ private void sendCommand(String command, String argument) { private void sendCommand(String command, String argument) throws NativeDaemonConnectorException { synchronized (this) { if (LOCAL_LOGD) Slog.d(TAG, String.format("SND -> {%s} {%s}", command, argument)); if (mOutputStream == null) { Slog.e(TAG, "No connection to daemon", new IllegalStateException()); throw new NativeDaemonConnectorException("No output stream!"); } else { StringBuilder builder = new StringBuilder(command); if (argument != null) { Loading Loading @@ -226,6 +229,7 @@ final class NativeDaemonConnector implements Runnable { while (!complete) { try { // TODO - this should not block forever String line = mResponseQueue.take(); if (LOCAL_LOGD) Slog.d(TAG, String.format("RSP <- {%s}", line)); String[] tokens = line.split(" "); Loading
services/java/com/android/server/NetworkManagementService.java +26 −5 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ import java.lang.IllegalStateException; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.concurrent.CountDownLatch; /** * @hide Loading @@ -54,7 +55,7 @@ import java.net.UnknownHostException; class NetworkManagementService extends INetworkManagementService.Stub { private static final String TAG = "NetworkManagmentService"; private static final boolean DBG = true; private static final String NETD_TAG = "NetdConnector"; class NetdResponseCode { Loading Loading @@ -86,6 +87,9 @@ class NetworkManagementService extends INetworkManagementService.Stub { */ private NativeDaemonConnector mConnector; private Thread mThread; private final CountDownLatch mConnectedSignal = new CountDownLatch(1); private ArrayList<INetworkManagementEventObserver> mObservers; /** Loading @@ -93,9 +97,8 @@ class NetworkManagementService extends INetworkManagementService.Stub { * * @param context Binder context for this service */ public NetworkManagementService(Context context) { private NetworkManagementService(Context context) { mContext = context; mObservers = new ArrayList<INetworkManagementEventObserver>(); if ("simulator".equals(SystemProperties.get("ro.product.device"))) { Loading @@ -104,8 +107,17 @@ class NetworkManagementService extends INetworkManagementService.Stub { mConnector = new NativeDaemonConnector( new NetdCallbackReceiver(), "netd", 10, NETD_TAG); Thread thread = new Thread(mConnector, NETD_TAG); thread.start(); mThread = new Thread(mConnector, NETD_TAG); } public static NetworkManagementService create(Context context) throws InterruptedException { NetworkManagementService service = new NetworkManagementService(context); if (DBG) Slog.d(TAG, "Creating NetworkManagementService"); service.mThread.start(); if (DBG) Slog.d(TAG, "Awaiting socket connection"); service.mConnectedSignal.await(); if (DBG) Slog.d(TAG, "Connected"); return service; } public void registerObserver(INetworkManagementEventObserver obs) { Loading Loading @@ -157,6 +169,14 @@ class NetworkManagementService extends INetworkManagementService.Stub { } } /** * Let us know the daemon is connected */ protected void onConnected() { if (DBG) Slog.d(TAG, "onConnected"); mConnectedSignal.countDown(); } // // Netd Callback handling Loading @@ -164,6 +184,7 @@ class NetworkManagementService extends INetworkManagementService.Stub { class NetdCallbackReceiver implements INativeDaemonConnectorCallbacks { public void onDaemonConnected() { NetworkManagementService.this.onConnected(); new Thread() { public void run() { } Loading
services/java/com/android/server/SystemServer.java +2 −1 Original line number Diff line number Diff line Loading @@ -255,7 +255,8 @@ class ServerThread extends Thread { try { Slog.i(TAG, "NetworkManagement Service"); ServiceManager.addService( Context.NETWORKMANAGEMENT_SERVICE, new NetworkManagementService(context)); Context.NETWORKMANAGEMENT_SERVICE, NetworkManagementService.create(context)); } catch (Throwable e) { Slog.e(TAG, "Failure starting NetworkManagement Service", e); } Loading