aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/AMReceiver.java
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/AMReceiver.java')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/AMReceiver.java161
1 files changed, 0 insertions, 161 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/AMReceiver.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/AMReceiver.java
deleted file mode 100644
index ea61945a2..000000000
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/AMReceiver.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php
- *
- * 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.ide.eclipse.adt.internal.launch;
-
-import com.android.ddmlib.IDevice;
-import com.android.ddmlib.MultiLineReceiver;
-import com.android.ide.eclipse.adt.AdtPlugin;
-
-import java.util.ArrayList;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-
-/**
- * Output receiver for am process (Activity Manager)
- *
- * Monitors adb output for am errors, and retries launch as appropriate.
- */
-public class AMReceiver extends MultiLineReceiver {
-
- private static final int MAX_ATTEMPT_COUNT = 5;
- private static final Pattern sAmErrorType = Pattern.compile("Error type (\\d+)"); //$NON-NLS-1$
-
- private final DelayedLaunchInfo mLaunchInfo;
- private final IDevice mDevice;
- private final ILaunchController mLaunchController;
-
- /**
- * Basic constructor.
- *
- * @param launchInfo the {@link DelayedLaunchInfo} associated with the am process.
- * @param device the Android device on which the launch is done.
- * @param launchController the {@link ILaunchController} that is managing the launch
- */
- public AMReceiver(DelayedLaunchInfo launchInfo, IDevice device,
- ILaunchController launchController) {
- mLaunchInfo = launchInfo;
- mDevice = device;
- mLaunchController = launchController;
- }
-
- /**
- * Monitors the am process for error messages. If an error occurs, will reattempt launch up to
- * <code>MAX_ATTEMPT_COUNT</code> times.
- *
- * @param lines a portion of the am output
- *
- * @see MultiLineReceiver#processNewLines(String[])
- */
- @Override
- public void processNewLines(String[] lines) {
- // first we check if one starts with error
- ArrayList<String> array = new ArrayList<String>();
- boolean error = false;
- boolean warning = false;
- for (String s : lines) {
- // ignore empty lines.
- if (s.length() == 0) {
- continue;
- }
-
- // check for errors that output an error type, if the attempt count is still
- // valid. If not the whole text will be output in the console
- if (mLaunchInfo.getAttemptCount() < MAX_ATTEMPT_COUNT &&
- mLaunchInfo.isCancelled() == false) {
- Matcher m = sAmErrorType.matcher(s);
- if (m.matches()) {
- // get the error type
- int type = Integer.parseInt(m.group(1));
-
- final int waitTime = 3;
- String msg;
-
- switch (type) {
- case 1:
- /* Intended fall through */
- case 2:
- msg = String.format(
- "Device not ready. Waiting %1$d seconds before next attempt.",
- waitTime);
- break;
- case 3:
- msg = String.format(
- "New package not yet registered with the system. Waiting %1$d seconds before next attempt.",
- waitTime);
- break;
- default:
- msg = String.format(
- "Device not ready (%2$d). Waiting %1$d seconds before next attempt.",
- waitTime, type);
- break;
-
- }
-
- AdtPlugin.printToConsole(mLaunchInfo.getProject(), msg);
-
- // launch another thread, that waits a bit and attempts another launch
- new Thread("Delayed Launch attempt") {
- @Override
- public void run() {
- try {
- sleep(waitTime * 1000);
- } catch (InterruptedException e) {
- // ignore
- }
-
- mLaunchController.launchApp(mLaunchInfo, mDevice);
- }
- }.start();
-
- // no need to parse the rest
- return;
- }
- }
-
- // check for error if needed
- if (error == false && s.startsWith("Error:")) { //$NON-NLS-1$
- error = true;
- }
- if (warning == false && s.startsWith("Warning:")) { //$NON-NLS-1$
- warning = true;
- }
-
- // add the line to the list
- array.add("ActivityManager: " + s); //$NON-NLS-1$
- }
-
- // then we display them in the console
- if (warning || error) {
- AdtPlugin.printErrorToConsole(mLaunchInfo.getProject(), array.toArray());
- } else {
- AdtPlugin.printToConsole(mLaunchInfo.getProject(), array.toArray());
- }
-
- // if error then we cancel the launch, and remove the delayed info
- if (error) {
- mLaunchController.stopLaunch(mLaunchInfo);
- }
- }
-
- /**
- * Returns true if launch has been cancelled
- */
- @Override
- public boolean isCancelled() {
- return mLaunchInfo.isCancelled();
- }
-}