That fuck shit the fascists are using
1package org.tm.archive.logsubmit;
2
3import android.content.Context;
4
5import androidx.annotation.NonNull;
6
7import org.signal.core.util.concurrent.DeadlockDetector;
8import org.tm.archive.dependencies.ApplicationDependencies;
9
10import java.text.SimpleDateFormat;
11import java.util.Date;
12import java.util.Locale;
13import java.util.Map;
14
15public class LogSectionThreadDump implements LogSection {
16
17 private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS zzz", Locale.US);
18
19 @Override
20 public @NonNull String getTitle() {
21 return "LAST THREAD DUMP";
22 }
23
24 @Override
25 public @NonNull CharSequence getContent(@NonNull Context context) {
26 Map<Thread, StackTraceElement[]> traces = ApplicationDependencies.getDeadlockDetector().getLastThreadDump();
27 long time = ApplicationDependencies.getDeadlockDetector().getLastThreadDumpTime();
28
29 if (traces == null) {
30 return "None";
31 }
32
33 StringBuilder out = new StringBuilder();
34
35 out.append("Time: ").append(DATE_FORMAT.format(new Date(time))).append(" (").append(time).append(")\n\n");
36
37 for (Map.Entry<Thread, StackTraceElement[]> entry : traces.entrySet()) {
38 Thread thread = entry.getKey();
39 out.append("-- [").append(thread.getId()).append("] ")
40 .append(thread.getName()).append(" (").append(thread.getState()).append(")\n");
41
42 for (StackTraceElement element : entry.getValue()) {
43 out.append(element.toString()).append("\n");
44 }
45
46 out.append("\n");
47 }
48
49 return out;
50 }
51}