| /* |
| * Copyright (C) 2007 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.ddmlib; |
| |
| import com.android.ddmlib.Log.LogLevel; |
| |
| /** |
| * Preferences for the ddm library. |
| * <p/>This class does not handle storing the preferences. It is merely a central point for |
| * applications using the ddmlib to override the default values. |
| * <p/>Various components of the ddmlib query this class to get their values. |
| * <p/>Calls to some <code>set##()</code> methods will update the components using the values |
| * right away, while other methods will have no effect once {@link AndroidDebugBridge#init(boolean)} |
| * has been called. |
| * <p/>Check the documentation of each method. |
| */ |
| public final class DdmPreferences { |
| |
| /** Default value for thread update flag upon client connection. */ |
| public final static boolean DEFAULT_INITIAL_THREAD_UPDATE = false; |
| /** Default value for heap update flag upon client connection. */ |
| public final static boolean DEFAULT_INITIAL_HEAP_UPDATE = false; |
| /** Default value for the selected client debug port */ |
| public final static int DEFAULT_SELECTED_DEBUG_PORT = 8700; |
| /** Default value for the debug port base */ |
| public final static int DEFAULT_DEBUG_PORT_BASE = 8600; |
| /** Default value for the logcat {@link LogLevel} */ |
| public final static LogLevel DEFAULT_LOG_LEVEL = LogLevel.ERROR; |
| |
| private static boolean sThreadUpdate = DEFAULT_INITIAL_THREAD_UPDATE; |
| private static boolean sInitialHeapUpdate = DEFAULT_INITIAL_HEAP_UPDATE; |
| |
| private static int sSelectedDebugPort = DEFAULT_SELECTED_DEBUG_PORT; |
| private static int sDebugPortBase = DEFAULT_DEBUG_PORT_BASE; |
| private static LogLevel sLogLevel = DEFAULT_LOG_LEVEL; |
| |
| /** |
| * Returns the initial {@link Client} flag for thread updates. |
| * @see #setInitialThreadUpdate(boolean) |
| */ |
| public static boolean getInitialThreadUpdate() { |
| return sThreadUpdate; |
| } |
| |
| /** |
| * Sets the initial {@link Client} flag for thread updates. |
| * <p/>This change takes effect right away, for newly created {@link Client} objects. |
| */ |
| public static void setInitialThreadUpdate(boolean state) { |
| sThreadUpdate = state; |
| } |
| |
| /** |
| * Returns the initial {@link Client} flag for heap updates. |
| * @see #setInitialHeapUpdate(boolean) |
| */ |
| public static boolean getInitialHeapUpdate() { |
| return sInitialHeapUpdate; |
| } |
| |
| /** |
| * Sets the initial {@link Client} flag for heap updates. |
| * <p/>If <code>true</code>, the {@link ClientData} will automatically be updated with |
| * the VM heap information whenever a GC happens. |
| * <p/>This change takes effect right away, for newly created {@link Client} objects. |
| */ |
| public static void setInitialHeapUpdate(boolean state) { |
| sInitialHeapUpdate = state; |
| } |
| |
| /** |
| * Returns the debug port used by the selected {@link Client}. |
| */ |
| public static int getSelectedDebugPort() { |
| return sSelectedDebugPort; |
| } |
| |
| /** |
| * Sets the debug port used by the selected {@link Client}. |
| * <p/>This change takes effect right away. |
| * @param port the new port to use. |
| */ |
| public static void setSelectedDebugPort(int port) { |
| sSelectedDebugPort = port; |
| |
| MonitorThread monitorThread = MonitorThread.getInstance(); |
| if (monitorThread != null) { |
| monitorThread.setDebugSelectedPort(port); |
| } |
| } |
| |
| /** |
| * Returns the debug port used by the first {@link Client}. Following clients, will use the |
| * next port. |
| */ |
| public static int getDebugPortBase() { |
| return sDebugPortBase; |
| } |
| |
| /** |
| * Sets the debug port used by the first {@link Client}. |
| * <p/>Once a port is used, the next Client will use port + 1. Quitting applications will |
| * release their debug port, and new clients will be able to reuse them. |
| * <p/>This must be called before {@link AndroidDebugBridge#init(boolean)}. |
| */ |
| public static void setDebugPortBase(int port) { |
| sDebugPortBase = port; |
| } |
| |
| /** |
| * Returns the minimum {@link LogLevel} being displayed. |
| */ |
| public static LogLevel getLogLevel() { |
| return sLogLevel; |
| } |
| |
| /** |
| * Sets the minimum {@link LogLevel} to display. |
| * <p/>This change takes effect right away. |
| */ |
| public static void setLogLevel(String value) { |
| sLogLevel = LogLevel.getByString(value); |
| |
| Log.setLevel(sLogLevel); |
| } |
| |
| /** |
| * Non accessible constructor. |
| */ |
| private DdmPreferences() { |
| // pass, only static methods in the class. |
| } |
| } |