blob: c96d40da6a321e69bf6a40a76b20ec1b85c345bb [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 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.
}
}