summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/net/netstats/NetworkStatsDataMigrationUtils.java8
-rw-r--r--core/java/com/android/internal/util/FileRotator.java15
2 files changed, 21 insertions, 2 deletions
diff --git a/core/java/android/net/netstats/NetworkStatsDataMigrationUtils.java b/core/java/android/net/netstats/NetworkStatsDataMigrationUtils.java
index 5c9989e9d981..76ee097c8c93 100644
--- a/core/java/android/net/netstats/NetworkStatsDataMigrationUtils.java
+++ b/core/java/android/net/netstats/NetworkStatsDataMigrationUtils.java
@@ -52,6 +52,7 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.net.ProtocolException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
@@ -161,9 +162,12 @@ public class NetworkStatsDataMigrationUtils {
@NonNull
private static ArrayList<File> getPlatformFileListForPrefix(@NonNull @Prefix String prefix) {
final ArrayList<File> list = new ArrayList<>();
- final File platformFiles = new File(getPlatformBaseDir(), "netstats");
+ final File platformFiles = getPlatformBaseDir();
if (platformFiles.exists()) {
- for (String name : platformFiles.list()) {
+ final String[] files = platformFiles.list();
+ if (files == null) return list;
+ Arrays.sort(files);
+ for (String name : files) {
// Skip when prefix doesn't match.
if (!name.startsWith(prefix + ".")) continue;
diff --git a/core/java/com/android/internal/util/FileRotator.java b/core/java/com/android/internal/util/FileRotator.java
index 4b3af1536175..5bc48c5172f0 100644
--- a/core/java/com/android/internal/util/FileRotator.java
+++ b/core/java/com/android/internal/util/FileRotator.java
@@ -16,6 +16,7 @@
package com.android.internal.util;
+import android.annotation.NonNull;
import android.os.FileUtils;
import android.util.Log;
@@ -282,6 +283,20 @@ public class FileRotator {
}
/**
+ * Process a single file atomically, with the given start and end timestamps.
+ * If a file with these exact start and end timestamps does not exist, a new
+ * empty file will be written.
+ */
+ public void rewriteSingle(@NonNull Rewriter rewriter, long startTimeMillis, long endTimeMillis)
+ throws IOException {
+ final FileInfo info = new FileInfo(mPrefix);
+
+ info.startMillis = startTimeMillis;
+ info.endMillis = endTimeMillis;
+ rewriteSingle(rewriter, info.build());
+ }
+
+ /**
* Read any rotated data that overlap the requested time range.
*/
public void readMatching(Reader reader, long matchStartMillis, long matchEndMillis)