blob: b0072ece7f0c140bed6639b0f80cc2856755076d [file] [log] [blame]
/*
* 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.
}
}