Add basic infra for regV5 local restore.

This commit is contained in:
Greyson Parrelli
2026-03-21 13:33:38 -04:00
parent ce6f39ae68
commit bb151c91e9
45 changed files with 2840 additions and 250 deletions

View File

@@ -38,6 +38,7 @@ import java.util.Optional;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
import java.util.function.Consumer;
import java.util.regex.Pattern;
import java.util.zip.GZIPOutputStream;
import java.util.zip.ZipEntry;
@@ -114,15 +115,15 @@ public class SubmitDebugLogRepository {
this.executor = SignalExecutors.SERIAL;
}
public void getPrefixLogLines(@NonNull Callback<List<LogLine>> callback) {
executor.execute(() -> callback.onResult(getPrefixLogLinesInternal()));
public void getPrefixLogLines(@NonNull Consumer<List<LogLine>> callback) {
executor.execute(() -> callback.accept(getPrefixLogLinesInternal()));
}
public void buildAndSubmitLog(@NonNull Callback<Optional<String>> callback) {
public void buildAndSubmitLog(@NonNull Consumer<Optional<String>> callback) {
SignalExecutors.UNBOUNDED.execute(() -> {
Log.blockUntilAllWritesFinished();
LogDatabase.getInstance(context).logs().trimToSize();
callback.onResult(submitLogInternal(System.currentTimeMillis(), getPrefixLogLinesInternal(), Tracer.getInstance().serialize()));
callback.accept(submitLogInternal(System.currentTimeMillis(), getPrefixLogLinesInternal(), Tracer.getInstance().serialize()));
});
}
@@ -133,11 +134,11 @@ public class SubmitDebugLogRepository {
return submitLogInternal(untilTime, getPrefixLogLinesInternal(), Tracer.getInstance().serialize());
}
public void submitLogFromReader(DebugLogsViewer.LogReader logReader, @Nullable byte[] trace, Callback<Optional<String>> callback) {
SignalExecutors.UNBOUNDED.execute(() -> callback.onResult(submitLogFromReaderInternal(logReader, trace)));
public void submitLogFromReader(DebugLogsViewer.LogReader logReader, @Nullable byte[] trace, Consumer<Optional<String>> callback) {
SignalExecutors.UNBOUNDED.execute(() -> callback.accept(submitLogFromReaderInternal(logReader, trace)));
}
public void writeLogToDisk(@NonNull Uri uri, long untilTime, Callback<Boolean> callback) {
public void writeLogToDisk(@NonNull Uri uri, long untilTime, Consumer<Boolean> callback) {
SignalExecutors.UNBOUNDED.execute(() -> {
try (ZipOutputStream outputStream = new ZipOutputStream(context.getContentResolver().openOutputStream(uri))) {
StringBuilder prefixLines = linesToStringBuilder(getPrefixLogLinesInternal(), null);
@@ -152,7 +153,7 @@ public class SubmitDebugLogRepository {
}
} catch (IllegalStateException e) {
Log.e(TAG, "Failed to read row!", e);
callback.onResult(false);
callback.accept(false);
return;
}
@@ -162,9 +163,9 @@ public class SubmitDebugLogRepository {
outputStream.write(Tracer.getInstance().serialize());
outputStream.closeEntry();
callback.onResult(true);
callback.accept(true);
} catch (IOException e) {
callback.onResult(false);
callback.accept(false);
}
});
}
@@ -449,8 +450,4 @@ public class SubmitDebugLogRepository {
return stringBuilder;
}
public interface Callback<E> {
void onResult(E result);
}
}