Loading core/java/android/content/SyncStatusInfo.java +55 −4 Original line number Diff line number Diff line Loading @@ -28,10 +28,15 @@ import java.util.GregorianCalendar; public class SyncStatusInfo implements Parcelable { private static final String TAG = "Sync"; static final int VERSION = 5; static final int VERSION = 6; private static final int MAX_EVENT_COUNT = 10; /** * Number of sync sources. KEEP THIS AND SyncStorageEngine.SOURCES IN SYNC. */ private static final int SOURCE_COUNT = 6; public final int authorityId; /** Loading Loading @@ -121,6 +126,9 @@ public class SyncStatusInfo implements Parcelable { public boolean pending; public boolean initialize; public final long[] perSourceLastSuccessTimes = new long[SOURCE_COUNT]; public final long[] perSourceLastFailureTimes = new long[SOURCE_COUNT]; // Warning: It is up to the external caller to ensure there are // no race conditions when accessing this list private ArrayList<Long> periodicSyncTimes; Loading Loading @@ -191,6 +199,10 @@ public class SyncStatusInfo implements Parcelable { todayStats.writeToParcel(parcel); yesterdayStats.writeToParcel(parcel); // Version 6. parcel.writeLongArray(perSourceLastSuccessTimes); parcel.writeLongArray(perSourceLastFailureTimes); } public SyncStatusInfo(Parcel parcel) { Loading Loading @@ -260,6 +272,10 @@ public class SyncStatusInfo implements Parcelable { todayStats.readFromParcel(parcel); yesterdayStats.readFromParcel(parcel); } if (version >= 6) { parcel.readLongArray(perSourceLastSuccessTimes); parcel.readLongArray(perSourceLastFailureTimes); } } public SyncStatusInfo(SyncStatusInfo other) { Loading @@ -284,6 +300,13 @@ public class SyncStatusInfo implements Parcelable { } mLastEventTimes.addAll(other.mLastEventTimes); mLastEvents.addAll(other.mLastEvents); copy(perSourceLastSuccessTimes, other.perSourceLastSuccessTimes); copy(perSourceLastFailureTimes, other.perSourceLastFailureTimes); } private static void copy(long[] to, long[] from) { System.arraycopy(from, 0, to, 0, to.length); } public void setPeriodicSyncTime(int index, long when) { Loading Loading @@ -332,6 +355,34 @@ public class SyncStatusInfo implements Parcelable { return mLastEvents.get(i); } /** Call this when a sync has succeeded. */ public void setLastSuccess(int source, long lastSyncTime) { lastSuccessTime = lastSyncTime; lastSuccessSource = source; lastFailureTime = 0; lastFailureSource = -1; lastFailureMesg = null; initialFailureTime = 0; if (0 <= source && source < perSourceLastSuccessTimes.length) { perSourceLastSuccessTimes[source] = lastSyncTime; } } /** Call this when a sync has failed. */ public void setLastFailure(int source, long lastSyncTime, String failureMessage) { lastFailureTime = lastSyncTime; lastFailureSource = source; lastFailureMesg = failureMessage; if (initialFailureTime == 0) { initialFailureTime = lastSyncTime; } if (0 <= source && source < perSourceLastFailureTimes.length) { perSourceLastFailureTimes[source] = lastSyncTime; } } public static final Creator<SyncStatusInfo> CREATOR = new Creator<SyncStatusInfo>() { public SyncStatusInfo createFromParcel(Parcel in) { return new SyncStatusInfo(in); Loading @@ -356,7 +407,7 @@ public class SyncStatusInfo implements Parcelable { } /** * If the last reset was not not today, move today's stats to yesterday's and clear today's. * If the last reset was not today, move today's stats to yesterday's and clear today's. */ public void maybeResetTodayStats(boolean clockValid, boolean force) { final long now = System.currentTimeMillis(); Loading services/core/java/com/android/server/content/SyncManager.java +19 −1 Original line number Diff line number Diff line Loading @@ -1980,6 +1980,9 @@ public class SyncManager { } static String formatTime(long time) { if (time == 0) { return "N/A"; } Time tobj = new Time(); tobj.set(time); return tobj.format("%Y-%m-%d %H:%M:%S"); Loading Loading @@ -2334,6 +2337,18 @@ public class SyncManager { pw.print("]"); pw.println(); pw.println(" Per source last syncs:"); for (int j = 0; j < SyncStorageEngine.SOURCES.length; j++) { pw.print(" "); pw.print(String.format("%8s", SyncStorageEngine.SOURCES[j])); pw.print(" Success: "); pw.print(formatTime(event.second.perSourceLastSuccessTimes[j])); pw.print(" Failure: "); pw.println(formatTime(event.second.perSourceLastFailureTimes[j])); } pw.println(" Last syncs:"); for (int j = 0; j < event.second.getEventCount(); j++) { pw.print(" "); pw.print(formatTime(event.second.getEventTime(j))); Loading @@ -2341,6 +2356,9 @@ public class SyncManager { pw.print(event.second.getEvent(j)); pw.println(); } if (event.second.getEventCount() == 0) { pw.println(" N/A"); } } } Loading services/core/java/com/android/server/content/SyncStorageEngine.java +10 −14 Original line number Diff line number Diff line Loading @@ -128,8 +128,13 @@ public class SyncStorageEngine { public static final long NOT_IN_BACKOFF_MODE = -1; /** String names for the sync source types. */ public static final String[] SOURCES = { "OTHER", /** * String names for the sync source types. * * KEEP THIS AND {@link SyncStatusInfo#SOURCE_COUNT} IN SYNC. */ public static final String[] SOURCES = { "OTHER", "LOCAL", "POLL", "USER", Loading Loading @@ -1231,12 +1236,7 @@ public class SyncStorageEngine { if (status.lastSuccessTime == 0 || status.lastFailureTime != 0) { writeStatusNow = true; } status.lastSuccessTime = lastSyncTime; status.lastSuccessSource = item.source; status.lastFailureTime = 0; status.lastFailureSource = -1; status.lastFailureMesg = null; status.initialFailureTime = 0; status.setLastSuccess(item.source, lastSyncTime); ds.successCount++; ds.successTime += elapsedTime; } else if (!MESG_CANCELED.equals(resultMessage)) { Loading @@ -1246,12 +1246,8 @@ public class SyncStorageEngine { status.totalStats.numFailures++; status.todayStats.numFailures++; status.lastFailureTime = lastSyncTime; status.lastFailureSource = item.source; status.lastFailureMesg = resultMessage; if (status.initialFailureTime == 0) { status.initialFailureTime = lastSyncTime; } status.setLastFailure(item.source, lastSyncTime, resultMessage); ds.failureCount++; ds.failureTime += elapsedTime; } else { Loading Loading
core/java/android/content/SyncStatusInfo.java +55 −4 Original line number Diff line number Diff line Loading @@ -28,10 +28,15 @@ import java.util.GregorianCalendar; public class SyncStatusInfo implements Parcelable { private static final String TAG = "Sync"; static final int VERSION = 5; static final int VERSION = 6; private static final int MAX_EVENT_COUNT = 10; /** * Number of sync sources. KEEP THIS AND SyncStorageEngine.SOURCES IN SYNC. */ private static final int SOURCE_COUNT = 6; public final int authorityId; /** Loading Loading @@ -121,6 +126,9 @@ public class SyncStatusInfo implements Parcelable { public boolean pending; public boolean initialize; public final long[] perSourceLastSuccessTimes = new long[SOURCE_COUNT]; public final long[] perSourceLastFailureTimes = new long[SOURCE_COUNT]; // Warning: It is up to the external caller to ensure there are // no race conditions when accessing this list private ArrayList<Long> periodicSyncTimes; Loading Loading @@ -191,6 +199,10 @@ public class SyncStatusInfo implements Parcelable { todayStats.writeToParcel(parcel); yesterdayStats.writeToParcel(parcel); // Version 6. parcel.writeLongArray(perSourceLastSuccessTimes); parcel.writeLongArray(perSourceLastFailureTimes); } public SyncStatusInfo(Parcel parcel) { Loading Loading @@ -260,6 +272,10 @@ public class SyncStatusInfo implements Parcelable { todayStats.readFromParcel(parcel); yesterdayStats.readFromParcel(parcel); } if (version >= 6) { parcel.readLongArray(perSourceLastSuccessTimes); parcel.readLongArray(perSourceLastFailureTimes); } } public SyncStatusInfo(SyncStatusInfo other) { Loading @@ -284,6 +300,13 @@ public class SyncStatusInfo implements Parcelable { } mLastEventTimes.addAll(other.mLastEventTimes); mLastEvents.addAll(other.mLastEvents); copy(perSourceLastSuccessTimes, other.perSourceLastSuccessTimes); copy(perSourceLastFailureTimes, other.perSourceLastFailureTimes); } private static void copy(long[] to, long[] from) { System.arraycopy(from, 0, to, 0, to.length); } public void setPeriodicSyncTime(int index, long when) { Loading Loading @@ -332,6 +355,34 @@ public class SyncStatusInfo implements Parcelable { return mLastEvents.get(i); } /** Call this when a sync has succeeded. */ public void setLastSuccess(int source, long lastSyncTime) { lastSuccessTime = lastSyncTime; lastSuccessSource = source; lastFailureTime = 0; lastFailureSource = -1; lastFailureMesg = null; initialFailureTime = 0; if (0 <= source && source < perSourceLastSuccessTimes.length) { perSourceLastSuccessTimes[source] = lastSyncTime; } } /** Call this when a sync has failed. */ public void setLastFailure(int source, long lastSyncTime, String failureMessage) { lastFailureTime = lastSyncTime; lastFailureSource = source; lastFailureMesg = failureMessage; if (initialFailureTime == 0) { initialFailureTime = lastSyncTime; } if (0 <= source && source < perSourceLastFailureTimes.length) { perSourceLastFailureTimes[source] = lastSyncTime; } } public static final Creator<SyncStatusInfo> CREATOR = new Creator<SyncStatusInfo>() { public SyncStatusInfo createFromParcel(Parcel in) { return new SyncStatusInfo(in); Loading @@ -356,7 +407,7 @@ public class SyncStatusInfo implements Parcelable { } /** * If the last reset was not not today, move today's stats to yesterday's and clear today's. * If the last reset was not today, move today's stats to yesterday's and clear today's. */ public void maybeResetTodayStats(boolean clockValid, boolean force) { final long now = System.currentTimeMillis(); Loading
services/core/java/com/android/server/content/SyncManager.java +19 −1 Original line number Diff line number Diff line Loading @@ -1980,6 +1980,9 @@ public class SyncManager { } static String formatTime(long time) { if (time == 0) { return "N/A"; } Time tobj = new Time(); tobj.set(time); return tobj.format("%Y-%m-%d %H:%M:%S"); Loading Loading @@ -2334,6 +2337,18 @@ public class SyncManager { pw.print("]"); pw.println(); pw.println(" Per source last syncs:"); for (int j = 0; j < SyncStorageEngine.SOURCES.length; j++) { pw.print(" "); pw.print(String.format("%8s", SyncStorageEngine.SOURCES[j])); pw.print(" Success: "); pw.print(formatTime(event.second.perSourceLastSuccessTimes[j])); pw.print(" Failure: "); pw.println(formatTime(event.second.perSourceLastFailureTimes[j])); } pw.println(" Last syncs:"); for (int j = 0; j < event.second.getEventCount(); j++) { pw.print(" "); pw.print(formatTime(event.second.getEventTime(j))); Loading @@ -2341,6 +2356,9 @@ public class SyncManager { pw.print(event.second.getEvent(j)); pw.println(); } if (event.second.getEventCount() == 0) { pw.println(" N/A"); } } } Loading
services/core/java/com/android/server/content/SyncStorageEngine.java +10 −14 Original line number Diff line number Diff line Loading @@ -128,8 +128,13 @@ public class SyncStorageEngine { public static final long NOT_IN_BACKOFF_MODE = -1; /** String names for the sync source types. */ public static final String[] SOURCES = { "OTHER", /** * String names for the sync source types. * * KEEP THIS AND {@link SyncStatusInfo#SOURCE_COUNT} IN SYNC. */ public static final String[] SOURCES = { "OTHER", "LOCAL", "POLL", "USER", Loading Loading @@ -1231,12 +1236,7 @@ public class SyncStorageEngine { if (status.lastSuccessTime == 0 || status.lastFailureTime != 0) { writeStatusNow = true; } status.lastSuccessTime = lastSyncTime; status.lastSuccessSource = item.source; status.lastFailureTime = 0; status.lastFailureSource = -1; status.lastFailureMesg = null; status.initialFailureTime = 0; status.setLastSuccess(item.source, lastSyncTime); ds.successCount++; ds.successTime += elapsedTime; } else if (!MESG_CANCELED.equals(resultMessage)) { Loading @@ -1246,12 +1246,8 @@ public class SyncStorageEngine { status.totalStats.numFailures++; status.todayStats.numFailures++; status.lastFailureTime = lastSyncTime; status.lastFailureSource = item.source; status.lastFailureMesg = resultMessage; if (status.initialFailureTime == 0) { status.initialFailureTime = lastSyncTime; } status.setLastFailure(item.source, lastSyncTime, resultMessage); ds.failureCount++; ds.failureTime += elapsedTime; } else { Loading