use of com.android.internal.os.TransferPipe in project android_frameworks_base by crdroidandroid.
the class ActivityManager method dumpService.
private static void dumpService(PrintWriter pw, FileDescriptor fd, String name, String[] args) {
pw.print("DUMP OF SERVICE ");
pw.print(name);
pw.println(":");
IBinder service = ServiceManager.checkService(name);
if (service == null) {
pw.println(" (Service not found)");
return;
}
TransferPipe tp = null;
try {
pw.flush();
tp = new TransferPipe();
tp.setBufferPrefix(" ");
service.dumpAsync(tp.getWriteFd().getFileDescriptor(), args);
tp.go(fd, 10000);
} catch (Throwable e) {
if (tp != null) {
tp.kill();
}
pw.println("Failure dumping service:");
e.printStackTrace(pw);
}
}
use of com.android.internal.os.TransferPipe in project android_frameworks_base by crdroidandroid.
the class ProviderMap method dumpProvider.
/**
* Invokes IApplicationThread.dumpProvider() on the thread of the specified provider if
* there is a thread associated with the provider.
*/
private void dumpProvider(String prefix, FileDescriptor fd, PrintWriter pw, final ContentProviderRecord r, String[] args, boolean dumpAll) {
String innerPrefix = prefix + " ";
synchronized (mAm) {
pw.print(prefix);
pw.print("PROVIDER ");
pw.print(r);
pw.print(" pid=");
if (r.proc != null)
pw.println(r.proc.pid);
else
pw.println("(not running)");
if (dumpAll) {
r.dump(pw, innerPrefix, true);
}
}
if (r.proc != null && r.proc.thread != null) {
pw.println(" Client:");
pw.flush();
try {
TransferPipe tp = new TransferPipe();
try {
r.proc.thread.dumpProvider(tp.getWriteFd().getFileDescriptor(), r.provider.asBinder(), args);
tp.setBufferPrefix(" ");
// Short timeout, since blocking here can
// deadlock with the application.
tp.go(fd, 2000);
} finally {
tp.kill();
}
} catch (IOException ex) {
pw.println(" Failure while dumping the provider: " + ex);
} catch (RemoteException ex) {
pw.println(" Got a RemoteException while dumping the service");
}
}
}
use of com.android.internal.os.TransferPipe in project android_frameworks_base by crdroidandroid.
the class ActivityStackSupervisor method dumpHistoryList.
static boolean dumpHistoryList(FileDescriptor fd, PrintWriter pw, List<ActivityRecord> list, String prefix, String label, boolean complete, boolean brief, boolean client, String dumpPackage, boolean needNL, String header1, String header2) {
TaskRecord lastTask = null;
String innerPrefix = null;
String[] args = null;
boolean printed = false;
for (int i = list.size() - 1; i >= 0; i--) {
final ActivityRecord r = list.get(i);
if (dumpPackage != null && !dumpPackage.equals(r.packageName)) {
continue;
}
if (innerPrefix == null) {
innerPrefix = prefix + " ";
args = new String[0];
}
printed = true;
final boolean full = !brief && (complete || !r.isInHistory());
if (needNL) {
pw.println("");
needNL = false;
}
if (header1 != null) {
pw.println(header1);
header1 = null;
}
if (header2 != null) {
pw.println(header2);
header2 = null;
}
if (lastTask != r.task) {
lastTask = r.task;
pw.print(prefix);
pw.print(full ? "* " : " ");
pw.println(lastTask);
if (full) {
lastTask.dump(pw, prefix + " ");
} else if (complete) {
// Complete + brief == give a summary. Isn't that obvious?!?
if (lastTask.intent != null) {
pw.print(prefix);
pw.print(" ");
pw.println(lastTask.intent.toInsecureStringWithClip());
}
}
}
pw.print(prefix);
pw.print(full ? " * " : " ");
pw.print(label);
pw.print(" #");
pw.print(i);
pw.print(": ");
pw.println(r);
if (full) {
r.dump(pw, innerPrefix);
} else if (complete) {
// Complete + brief == give a summary. Isn't that obvious?!?
pw.print(innerPrefix);
pw.println(r.intent.toInsecureString());
if (r.app != null) {
pw.print(innerPrefix);
pw.println(r.app);
}
}
if (client && r.app != null && r.app.thread != null) {
// flush anything that is already in the PrintWriter since the thread is going
// to write to the file descriptor directly
pw.flush();
try {
TransferPipe tp = new TransferPipe();
try {
r.app.thread.dumpActivity(tp.getWriteFd().getFileDescriptor(), r.appToken, innerPrefix, args);
// Short timeout, since blocking here can
// deadlock with the application.
tp.go(fd, 2000);
} finally {
tp.kill();
}
} catch (IOException e) {
pw.println(innerPrefix + "Failure while dumping the activity: " + e);
} catch (RemoteException e) {
pw.println(innerPrefix + "Got a RemoteException while dumping the activity");
}
needNL = true;
}
}
return printed;
}
use of com.android.internal.os.TransferPipe in project platform_frameworks_base by android.
the class ActivityManagerService method dumpDbInfo.
final void dumpDbInfo(FileDescriptor fd, PrintWriter pw, String[] args) {
ArrayList<ProcessRecord> procs = collectProcesses(pw, 0, false, args);
if (procs == null) {
pw.println("No process found for: " + args[0]);
return;
}
pw.println("Applications Database Info:");
for (int i = procs.size() - 1; i >= 0; i--) {
ProcessRecord r = procs.get(i);
if (r.thread != null) {
pw.println("\n** Database info for pid " + r.pid + " [" + r.processName + "] **");
pw.flush();
try {
TransferPipe tp = new TransferPipe();
try {
r.thread.dumpDbInfo(tp.getWriteFd().getFileDescriptor(), args);
tp.go(fd);
} finally {
tp.kill();
}
} catch (IOException e) {
pw.println("Failure while dumping the app: " + r);
pw.flush();
} catch (RemoteException e) {
pw.println("Got a RemoteException while dumping the app " + r);
pw.flush();
}
}
}
}
use of com.android.internal.os.TransferPipe in project platform_frameworks_base by android.
the class ActivityManager method dumpService.
private static void dumpService(PrintWriter pw, FileDescriptor fd, String name, String[] args) {
pw.print("DUMP OF SERVICE ");
pw.print(name);
pw.println(":");
IBinder service = ServiceManager.checkService(name);
if (service == null) {
pw.println(" (Service not found)");
return;
}
TransferPipe tp = null;
try {
pw.flush();
tp = new TransferPipe();
tp.setBufferPrefix(" ");
service.dumpAsync(tp.getWriteFd().getFileDescriptor(), args);
tp.go(fd, 10000);
} catch (Throwable e) {
if (tp != null) {
tp.kill();
}
pw.println("Failure dumping service:");
e.printStackTrace(pw);
}
}
Aggregations