/* * 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 static final boolean DEFAULT_INITIAL_THREAD_UPDATE = false; /** Default value for heap update flag upon client connection. */ public static final boolean DEFAULT_INITIAL_HEAP_UPDATE = false; /** Default value for the selected client debug port */ public static final int DEFAULT_SELECTED_DEBUG_PORT = 8700; /** Default value for the debug port base */ public static final int DEFAULT_DEBUG_PORT_BASE = 8600; /** Default value for the logcat {@link LogLevel} */ public static final LogLevel DEFAULT_LOG_LEVEL = LogLevel.ERROR; /** Default timeout values for adb connection (milliseconds) */ public static final int DEFAULT_TIMEOUT = 5000; // standard delay, in ms /** Default profiler buffer size (megabytes) */ public static final int DEFAULT_PROFILER_BUFFER_SIZE_MB = 8; /** Default values for the use of the ADBHOST environment variable. */ public static final boolean DEFAULT_USE_ADBHOST = false; public static final String DEFAULT_ADBHOST_VALUE = "127.0.0.1"; 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; private static int sTimeOut = DEFAULT_TIMEOUT; private static int sProfilerBufferSizeMb = DEFAULT_PROFILER_BUFFER_SIZE_MB; private static boolean sUseAdbHost = DEFAULT_USE_ADBHOST; private static String sAdbHostValue = DEFAULT_ADBHOST_VALUE; /** * 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); } /** * Returns the timeout to be used in adb connections (milliseconds). */ public static int getTimeOut() { return sTimeOut; } /** * Sets the timeout value for adb connection. * <p/>This change takes effect for newly created connections only. * @param timeOut the timeout value (milliseconds). */ public static void setTimeOut(int timeOut) { sTimeOut = timeOut; } /** * Returns the profiler buffer size (megabytes). */ public static int getProfilerBufferSizeMb() { return sProfilerBufferSizeMb; } /** * Sets the profiler buffer size value. * @param bufferSizeMb the buffer size (megabytes). */ public static void setProfilerBufferSizeMb(int bufferSizeMb) { sProfilerBufferSizeMb = bufferSizeMb; } /** * Returns a boolean indicating that the user uses or not the variable ADBHOST. */ public static boolean getUseAdbHost() { return sUseAdbHost; } /** * Sets the value of the boolean indicating that the user uses or not the variable ADBHOST. * @param useAdbHost true if the user uses ADBHOST */ public static void setUseAdbHost(boolean useAdbHost) { sUseAdbHost = useAdbHost; } /** * Returns the value of the ADBHOST variable set by the user. */ public static String getAdbHostValue() { return sAdbHostValue; } /** * Sets the value of the ADBHOST variable. * @param adbHostValue */ public static void setAdbHostValue(String adbHostValue) { sAdbHostValue = adbHostValue; } /** * Non accessible constructor. */ private DdmPreferences() { // pass, only static methods in the class. } }