
com.android.ddmlib.IShellEnabledDevice Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ddmlib Show documentation
Show all versions of ddmlib Show documentation
Library providing APIs to talk to Android devices
/*
* Copyright (C) 2013 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.annotations.NonNull;
import java.io.IOException;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
/**
* An abstract device that can receive shell commands.
*/
public interface IShellEnabledDevice {
/**
* Returns a (humanized) name for this device. Typically this is the AVD name for AVD's, and
* a combination of the manufacturer name, model name & serial number for devices.
*/
public String getName();
/**
* Executes a shell command on the device, and sends the result to a receiver.
* maxTimeToOutputResponse is used as a maximum waiting time when expecting the
* command output from the device.
* At any time, if the shell command does not output anything for a period longer than
* maxTimeToOutputResponse, then the method will throw
* {@link ShellCommandUnresponsiveException}.
* For commands like log output, a maxTimeToOutputResponse value of 0, meaning
* that the method will never throw and will block until the receiver's
* {@link IShellOutputReceiver#isCancelled()} returns true
, should be
* used.
*
* @param command the shell command to execute
* @param receiver the {@link IShellOutputReceiver} that will receives the output of the shell
* command
* @param maxTimeToOutputResponse the maximum amount of time during which the command is allowed
* to not output any response. A value of 0 means the method will wait forever
* (until the receiver cancels the execution) for command output and
* never throw.
* @param maxTimeUnits Units for non-zero {@code maxTimeToOutputResponse} values.
* @throws TimeoutException in case of timeout on the connection when sending the command.
* @throws AdbCommandRejectedException if adb rejects the command.
* @throws ShellCommandUnresponsiveException in case the shell command doesn't send any output
* for a period longer than maxTimeToOutputResponse.
* @throws IOException in case of I/O error on the connection.
*
* @see DdmPreferences#getTimeOut()
*/
public void executeShellCommand(String command, IShellOutputReceiver receiver,
long maxTimeToOutputResponse, TimeUnit maxTimeUnits)
throws TimeoutException, AdbCommandRejectedException, ShellCommandUnresponsiveException,
IOException;
/**
* Do a potential asynchronous query for a system property.
*
* @param name the name of the value to return.
* @return a {@link java.util.concurrent.Future} which can be used to retrieve value of property. Future#get() can
* return null if property can not be retrieved.
*/
@NonNull
public Future getSystemProperty(@NonNull String name);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy