Merge "Rename narc to cake." into tm-dev

This commit is contained in:
TreeHugger Robot
2022-04-20 22:27:01 +00:00
committed by Android (Google) Code Review
10 changed files with 180 additions and 178 deletions

View File

@@ -28,8 +28,8 @@ import static com.android.server.tare.EconomicPolicy.TYPE_REWARD;
import static com.android.server.tare.EconomicPolicy.eventToString; import static com.android.server.tare.EconomicPolicy.eventToString;
import static com.android.server.tare.EconomicPolicy.getEventType; import static com.android.server.tare.EconomicPolicy.getEventType;
import static com.android.server.tare.TareUtils.appToString; import static com.android.server.tare.TareUtils.appToString;
import static com.android.server.tare.TareUtils.cakeToString;
import static com.android.server.tare.TareUtils.getCurrentTimeMillis; import static com.android.server.tare.TareUtils.getCurrentTimeMillis;
import static com.android.server.tare.TareUtils.narcToString;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.annotation.Nullable; import android.annotation.Nullable;
@@ -161,7 +161,7 @@ class Agent {
@GuardedBy("mLock") @GuardedBy("mLock")
private boolean isAffordableLocked(long balance, long price, long ctp) { private boolean isAffordableLocked(long balance, long price, long ctp) {
return balance >= price && mScribe.getRemainingConsumableNarcsLocked() >= ctp; return balance >= price && mScribe.getRemainingConsumableCakesLocked() >= ctp;
} }
@GuardedBy("mLock") @GuardedBy("mLock")
@@ -464,13 +464,13 @@ class Agent {
+ eventToString(transaction.eventId) + eventToString(transaction.eventId)
+ (transaction.tag == null ? "" : ":" + transaction.tag) + (transaction.tag == null ? "" : ":" + transaction.tag)
+ " for " + appToString(userId, pkgName) + " for " + appToString(userId, pkgName)
+ " by " + narcToString(transaction.delta - newDelta)); + " by " + cakeToString(transaction.delta - newDelta));
transaction = new Ledger.Transaction( transaction = new Ledger.Transaction(
transaction.startTimeMs, transaction.endTimeMs, transaction.startTimeMs, transaction.endTimeMs,
transaction.eventId, transaction.tag, newDelta, transaction.ctp); transaction.eventId, transaction.tag, newDelta, transaction.ctp);
} }
ledger.recordTransaction(transaction); ledger.recordTransaction(transaction);
mScribe.adjustRemainingConsumableNarcsLocked(-transaction.ctp); mScribe.adjustRemainingConsumableCakesLocked(-transaction.ctp);
if (transaction.delta != 0 && notifyOnAffordabilityChange) { if (transaction.delta != 0 && notifyOnAffordabilityChange) {
final ArraySet<ActionAffordabilityNote> actionAffordabilityNotes = final ArraySet<ActionAffordabilityNote> actionAffordabilityNotes =
mActionAffordabilityNotes.get(userId, pkgName); mActionAffordabilityNotes.get(userId, pkgName);
@@ -724,7 +724,7 @@ class Agent {
private void reclaimAssetsLocked(final int userId, @NonNull final String pkgName) { private void reclaimAssetsLocked(final int userId, @NonNull final String pkgName) {
final Ledger ledger = mScribe.getLedgerLocked(userId, pkgName); final Ledger ledger = mScribe.getLedgerLocked(userId, pkgName);
if (ledger.getCurrentBalance() != 0) { if (ledger.getCurrentBalance() != 0) {
mScribe.adjustRemainingConsumableNarcsLocked(-ledger.getCurrentBalance()); mScribe.adjustRemainingConsumableCakesLocked(-ledger.getCurrentBalance());
} }
mScribe.discardLedgerLocked(userId, pkgName); mScribe.discardLedgerLocked(userId, pkgName);
mCurrentOngoingEvents.delete(userId, pkgName); mCurrentOngoingEvents.delete(userId, pkgName);
@@ -872,7 +872,7 @@ class Agent {
return; return;
} }
mTrendCalculator.reset(getBalanceLocked(userId, pkgName), mTrendCalculator.reset(getBalanceLocked(userId, pkgName),
mScribe.getRemainingConsumableNarcsLocked(), mScribe.getRemainingConsumableCakesLocked(),
mActionAffordabilityNotes.get(userId, pkgName)); mActionAffordabilityNotes.get(userId, pkgName));
ongoingEvents.forEach(mTrendCalculator); ongoingEvents.forEach(mTrendCalculator);
final long lowerTimeMs = mTrendCalculator.getTimeToCrossLowerThresholdMs(); final long lowerTimeMs = mTrendCalculator.getTimeToCrossLowerThresholdMs();
@@ -1260,11 +1260,11 @@ class Agent {
pw.print(" runtime="); pw.print(" runtime=");
TimeUtils.formatDuration(nowElapsed - ongoingEvent.startTimeElapsed, pw); TimeUtils.formatDuration(nowElapsed - ongoingEvent.startTimeElapsed, pw);
pw.print(" delta/sec="); pw.print(" delta/sec=");
pw.print(narcToString(ongoingEvent.getDeltaPerSec())); pw.print(cakeToString(ongoingEvent.getDeltaPerSec()));
final long ctp = ongoingEvent.getCtpPerSec(); final long ctp = ongoingEvent.getCtpPerSec();
if (ctp != 0) { if (ctp != 0) {
pw.print(" ctp/sec="); pw.print(" ctp/sec=");
pw.print(narcToString(ongoingEvent.getCtpPerSec())); pw.print(cakeToString(ongoingEvent.getCtpPerSec()));
} }
pw.print(" refCount="); pw.print(" refCount=");
pw.print(ongoingEvent.refCount); pw.print(ongoingEvent.refCount);

View File

@@ -97,8 +97,8 @@ import static com.android.server.tare.Modifier.COST_MODIFIER_CHARGING;
import static com.android.server.tare.Modifier.COST_MODIFIER_DEVICE_IDLE; import static com.android.server.tare.Modifier.COST_MODIFIER_DEVICE_IDLE;
import static com.android.server.tare.Modifier.COST_MODIFIER_POWER_SAVE_MODE; import static com.android.server.tare.Modifier.COST_MODIFIER_POWER_SAVE_MODE;
import static com.android.server.tare.Modifier.COST_MODIFIER_PROCESS_STATE; import static com.android.server.tare.Modifier.COST_MODIFIER_PROCESS_STATE;
import static com.android.server.tare.TareUtils.arcToNarc; import static com.android.server.tare.TareUtils.arcToCake;
import static com.android.server.tare.TareUtils.narcToString; import static com.android.server.tare.TareUtils.cakeToString;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.annotation.Nullable; import android.annotation.Nullable;
@@ -219,143 +219,143 @@ public class AlarmManagerEconomicPolicy extends EconomicPolicy {
Slog.e(TAG, "Global setting key incorrect: ", e); Slog.e(TAG, "Global setting key incorrect: ", e);
} }
mMinSatiatedBalanceExempted = arcToNarc(mParser.getInt(KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED, mMinSatiatedBalanceExempted = arcToCake(mParser.getInt(KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED,
DEFAULT_AM_MIN_SATIATED_BALANCE_EXEMPTED)); DEFAULT_AM_MIN_SATIATED_BALANCE_EXEMPTED));
mMinSatiatedBalanceOther = arcToNarc(mParser.getInt(KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP, mMinSatiatedBalanceOther = arcToCake(mParser.getInt(KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP,
DEFAULT_AM_MIN_SATIATED_BALANCE_OTHER_APP)); DEFAULT_AM_MIN_SATIATED_BALANCE_OTHER_APP));
mMaxSatiatedBalance = arcToNarc(mParser.getInt(KEY_AM_MAX_SATIATED_BALANCE, mMaxSatiatedBalance = arcToCake(mParser.getInt(KEY_AM_MAX_SATIATED_BALANCE,
DEFAULT_AM_MAX_SATIATED_BALANCE)); DEFAULT_AM_MAX_SATIATED_BALANCE));
mInitialSatiatedConsumptionLimit = arcToNarc(mParser.getInt( mInitialSatiatedConsumptionLimit = arcToCake(mParser.getInt(
KEY_AM_INITIAL_CONSUMPTION_LIMIT, DEFAULT_AM_INITIAL_CONSUMPTION_LIMIT)); KEY_AM_INITIAL_CONSUMPTION_LIMIT, DEFAULT_AM_INITIAL_CONSUMPTION_LIMIT));
mHardSatiatedConsumptionLimit = Math.max(mInitialSatiatedConsumptionLimit, mHardSatiatedConsumptionLimit = Math.max(mInitialSatiatedConsumptionLimit,
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_AM_HARD_CONSUMPTION_LIMIT, DEFAULT_AM_HARD_CONSUMPTION_LIMIT))); KEY_AM_HARD_CONSUMPTION_LIMIT, DEFAULT_AM_HARD_CONSUMPTION_LIMIT)));
final long exactAllowWhileIdleWakeupBasePrice = arcToNarc( final long exactAllowWhileIdleWakeupBasePrice = arcToCake(
mParser.getInt(KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_WAKEUP_BASE_PRICE, mParser.getInt(KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_WAKEUP_BASE_PRICE,
DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_WAKEUP_BASE_PRICE)); DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_WAKEUP_BASE_PRICE));
mActions.put(ACTION_ALARM_WAKEUP_EXACT_ALLOW_WHILE_IDLE, mActions.put(ACTION_ALARM_WAKEUP_EXACT_ALLOW_WHILE_IDLE,
new Action(ACTION_ALARM_WAKEUP_EXACT_ALLOW_WHILE_IDLE, new Action(ACTION_ALARM_WAKEUP_EXACT_ALLOW_WHILE_IDLE,
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_WAKEUP_CTP, KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_WAKEUP_CTP,
DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_WAKEUP_CTP)), DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_WAKEUP_CTP)),
exactAllowWhileIdleWakeupBasePrice)); exactAllowWhileIdleWakeupBasePrice));
mActions.put(ACTION_ALARM_WAKEUP_EXACT, mActions.put(ACTION_ALARM_WAKEUP_EXACT,
new Action(ACTION_ALARM_WAKEUP_EXACT, new Action(ACTION_ALARM_WAKEUP_EXACT,
arcToNarc(mParser.getInt(KEY_AM_ACTION_ALARM_EXACT_WAKEUP_CTP, arcToCake(mParser.getInt(KEY_AM_ACTION_ALARM_EXACT_WAKEUP_CTP,
DEFAULT_AM_ACTION_ALARM_EXACT_WAKEUP_CTP)), DEFAULT_AM_ACTION_ALARM_EXACT_WAKEUP_CTP)),
arcToNarc(mParser.getInt(KEY_AM_ACTION_ALARM_EXACT_WAKEUP_BASE_PRICE, arcToCake(mParser.getInt(KEY_AM_ACTION_ALARM_EXACT_WAKEUP_BASE_PRICE,
DEFAULT_AM_ACTION_ALARM_EXACT_WAKEUP_BASE_PRICE)))); DEFAULT_AM_ACTION_ALARM_EXACT_WAKEUP_BASE_PRICE))));
final long inexactAllowWhileIdleWakeupBasePrice = final long inexactAllowWhileIdleWakeupBasePrice =
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_WAKEUP_BASE_PRICE, KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_WAKEUP_BASE_PRICE,
DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_WAKEUP_BASE_PRICE)); DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_WAKEUP_BASE_PRICE));
mActions.put(ACTION_ALARM_WAKEUP_INEXACT_ALLOW_WHILE_IDLE, mActions.put(ACTION_ALARM_WAKEUP_INEXACT_ALLOW_WHILE_IDLE,
new Action(ACTION_ALARM_WAKEUP_INEXACT_ALLOW_WHILE_IDLE, new Action(ACTION_ALARM_WAKEUP_INEXACT_ALLOW_WHILE_IDLE,
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_WAKEUP_CTP, KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_WAKEUP_CTP,
DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_WAKEUP_CTP)), DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_WAKEUP_CTP)),
inexactAllowWhileIdleWakeupBasePrice)); inexactAllowWhileIdleWakeupBasePrice));
mActions.put(ACTION_ALARM_WAKEUP_INEXACT, mActions.put(ACTION_ALARM_WAKEUP_INEXACT,
new Action(ACTION_ALARM_WAKEUP_INEXACT, new Action(ACTION_ALARM_WAKEUP_INEXACT,
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_AM_ACTION_ALARM_INEXACT_WAKEUP_CTP, KEY_AM_ACTION_ALARM_INEXACT_WAKEUP_CTP,
DEFAULT_AM_ACTION_ALARM_INEXACT_WAKEUP_CTP)), DEFAULT_AM_ACTION_ALARM_INEXACT_WAKEUP_CTP)),
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_AM_ACTION_ALARM_INEXACT_WAKEUP_BASE_PRICE, KEY_AM_ACTION_ALARM_INEXACT_WAKEUP_BASE_PRICE,
DEFAULT_AM_ACTION_ALARM_INEXACT_WAKEUP_BASE_PRICE)))); DEFAULT_AM_ACTION_ALARM_INEXACT_WAKEUP_BASE_PRICE))));
final long exactAllowWhileIdleNonWakeupBasePrice = final long exactAllowWhileIdleNonWakeupBasePrice =
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_NONWAKEUP_BASE_PRICE, KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_NONWAKEUP_BASE_PRICE,
DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_NONWAKEUP_BASE_PRICE)); DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_NONWAKEUP_BASE_PRICE));
mActions.put(ACTION_ALARM_NONWAKEUP_EXACT_ALLOW_WHILE_IDLE, mActions.put(ACTION_ALARM_NONWAKEUP_EXACT_ALLOW_WHILE_IDLE,
new Action(ACTION_ALARM_NONWAKEUP_EXACT_ALLOW_WHILE_IDLE, new Action(ACTION_ALARM_NONWAKEUP_EXACT_ALLOW_WHILE_IDLE,
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_NONWAKEUP_CTP, KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_NONWAKEUP_CTP,
DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_NONWAKEUP_CTP)), DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_NONWAKEUP_CTP)),
exactAllowWhileIdleNonWakeupBasePrice)); exactAllowWhileIdleNonWakeupBasePrice));
mActions.put(ACTION_ALARM_NONWAKEUP_EXACT, mActions.put(ACTION_ALARM_NONWAKEUP_EXACT,
new Action(ACTION_ALARM_NONWAKEUP_EXACT, new Action(ACTION_ALARM_NONWAKEUP_EXACT,
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_AM_ACTION_ALARM_EXACT_NONWAKEUP_CTP, KEY_AM_ACTION_ALARM_EXACT_NONWAKEUP_CTP,
DEFAULT_AM_ACTION_ALARM_EXACT_NONWAKEUP_CTP)), DEFAULT_AM_ACTION_ALARM_EXACT_NONWAKEUP_CTP)),
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_AM_ACTION_ALARM_EXACT_NONWAKEUP_BASE_PRICE, KEY_AM_ACTION_ALARM_EXACT_NONWAKEUP_BASE_PRICE,
DEFAULT_AM_ACTION_ALARM_EXACT_NONWAKEUP_BASE_PRICE)))); DEFAULT_AM_ACTION_ALARM_EXACT_NONWAKEUP_BASE_PRICE))));
final long inexactAllowWhileIdleNonWakeupBasePrice = final long inexactAllowWhileIdleNonWakeupBasePrice =
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_NONWAKEUP_BASE_PRICE, KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_NONWAKEUP_BASE_PRICE,
DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_NONWAKEUP_BASE_PRICE)); DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_NONWAKEUP_BASE_PRICE));
mActions.put(ACTION_ALARM_NONWAKEUP_INEXACT_ALLOW_WHILE_IDLE, mActions.put(ACTION_ALARM_NONWAKEUP_INEXACT_ALLOW_WHILE_IDLE,
new Action(ACTION_ALARM_NONWAKEUP_INEXACT_ALLOW_WHILE_IDLE, new Action(ACTION_ALARM_NONWAKEUP_INEXACT_ALLOW_WHILE_IDLE,
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_NONWAKEUP_CTP, KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_NONWAKEUP_CTP,
DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_NONWAKEUP_CTP)), DEFAULT_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_INEXACT_NONWAKEUP_CTP)),
inexactAllowWhileIdleNonWakeupBasePrice)); inexactAllowWhileIdleNonWakeupBasePrice));
mActions.put(ACTION_ALARM_NONWAKEUP_INEXACT, mActions.put(ACTION_ALARM_NONWAKEUP_INEXACT,
new Action(ACTION_ALARM_NONWAKEUP_INEXACT, new Action(ACTION_ALARM_NONWAKEUP_INEXACT,
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_AM_ACTION_ALARM_INEXACT_NONWAKEUP_CTP, KEY_AM_ACTION_ALARM_INEXACT_NONWAKEUP_CTP,
DEFAULT_AM_ACTION_ALARM_INEXACT_NONWAKEUP_CTP)), DEFAULT_AM_ACTION_ALARM_INEXACT_NONWAKEUP_CTP)),
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_AM_ACTION_ALARM_INEXACT_NONWAKEUP_BASE_PRICE, KEY_AM_ACTION_ALARM_INEXACT_NONWAKEUP_BASE_PRICE,
DEFAULT_AM_ACTION_ALARM_INEXACT_NONWAKEUP_BASE_PRICE)))); DEFAULT_AM_ACTION_ALARM_INEXACT_NONWAKEUP_BASE_PRICE))));
mActions.put(ACTION_ALARM_CLOCK, mActions.put(ACTION_ALARM_CLOCK,
new Action(ACTION_ALARM_CLOCK, new Action(ACTION_ALARM_CLOCK,
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_AM_ACTION_ALARM_ALARMCLOCK_CTP, KEY_AM_ACTION_ALARM_ALARMCLOCK_CTP,
DEFAULT_AM_ACTION_ALARM_ALARMCLOCK_CTP)), DEFAULT_AM_ACTION_ALARM_ALARMCLOCK_CTP)),
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_AM_ACTION_ALARM_ALARMCLOCK_BASE_PRICE, KEY_AM_ACTION_ALARM_ALARMCLOCK_BASE_PRICE,
DEFAULT_AM_ACTION_ALARM_ALARMCLOCK_BASE_PRICE)))); DEFAULT_AM_ACTION_ALARM_ALARMCLOCK_BASE_PRICE))));
mRewards.put(REWARD_TOP_ACTIVITY, new Reward(REWARD_TOP_ACTIVITY, mRewards.put(REWARD_TOP_ACTIVITY, new Reward(REWARD_TOP_ACTIVITY,
arcToNarc(mParser.getInt(KEY_AM_REWARD_TOP_ACTIVITY_INSTANT, arcToCake(mParser.getInt(KEY_AM_REWARD_TOP_ACTIVITY_INSTANT,
DEFAULT_AM_REWARD_TOP_ACTIVITY_INSTANT)), DEFAULT_AM_REWARD_TOP_ACTIVITY_INSTANT)),
(long) (arcToNarc(1) * mParser.getFloat(KEY_AM_REWARD_TOP_ACTIVITY_ONGOING, (long) (arcToCake(1) * mParser.getFloat(KEY_AM_REWARD_TOP_ACTIVITY_ONGOING,
DEFAULT_AM_REWARD_TOP_ACTIVITY_ONGOING)), DEFAULT_AM_REWARD_TOP_ACTIVITY_ONGOING)),
arcToNarc(mParser.getInt(KEY_AM_REWARD_TOP_ACTIVITY_MAX, arcToCake(mParser.getInt(KEY_AM_REWARD_TOP_ACTIVITY_MAX,
DEFAULT_AM_REWARD_TOP_ACTIVITY_MAX)))); DEFAULT_AM_REWARD_TOP_ACTIVITY_MAX))));
mRewards.put(REWARD_NOTIFICATION_SEEN, new Reward(REWARD_NOTIFICATION_SEEN, mRewards.put(REWARD_NOTIFICATION_SEEN, new Reward(REWARD_NOTIFICATION_SEEN,
arcToNarc(mParser.getInt(KEY_AM_REWARD_NOTIFICATION_SEEN_INSTANT, arcToCake(mParser.getInt(KEY_AM_REWARD_NOTIFICATION_SEEN_INSTANT,
DEFAULT_AM_REWARD_NOTIFICATION_SEEN_INSTANT)), DEFAULT_AM_REWARD_NOTIFICATION_SEEN_INSTANT)),
arcToNarc(mParser.getInt(KEY_AM_REWARD_NOTIFICATION_SEEN_ONGOING, arcToCake(mParser.getInt(KEY_AM_REWARD_NOTIFICATION_SEEN_ONGOING,
DEFAULT_AM_REWARD_NOTIFICATION_SEEN_ONGOING)), DEFAULT_AM_REWARD_NOTIFICATION_SEEN_ONGOING)),
arcToNarc(mParser.getInt(KEY_AM_REWARD_NOTIFICATION_SEEN_MAX, arcToCake(mParser.getInt(KEY_AM_REWARD_NOTIFICATION_SEEN_MAX,
DEFAULT_AM_REWARD_NOTIFICATION_SEEN_MAX)))); DEFAULT_AM_REWARD_NOTIFICATION_SEEN_MAX))));
mRewards.put(REWARD_NOTIFICATION_INTERACTION, mRewards.put(REWARD_NOTIFICATION_INTERACTION,
new Reward(REWARD_NOTIFICATION_INTERACTION, new Reward(REWARD_NOTIFICATION_INTERACTION,
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_AM_REWARD_NOTIFICATION_INTERACTION_INSTANT, KEY_AM_REWARD_NOTIFICATION_INTERACTION_INSTANT,
DEFAULT_AM_REWARD_NOTIFICATION_INTERACTION_INSTANT)), DEFAULT_AM_REWARD_NOTIFICATION_INTERACTION_INSTANT)),
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_AM_REWARD_NOTIFICATION_INTERACTION_ONGOING, KEY_AM_REWARD_NOTIFICATION_INTERACTION_ONGOING,
DEFAULT_AM_REWARD_NOTIFICATION_INTERACTION_ONGOING)), DEFAULT_AM_REWARD_NOTIFICATION_INTERACTION_ONGOING)),
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_AM_REWARD_NOTIFICATION_INTERACTION_MAX, KEY_AM_REWARD_NOTIFICATION_INTERACTION_MAX,
DEFAULT_AM_REWARD_NOTIFICATION_INTERACTION_MAX)))); DEFAULT_AM_REWARD_NOTIFICATION_INTERACTION_MAX))));
mRewards.put(REWARD_WIDGET_INTERACTION, new Reward(REWARD_WIDGET_INTERACTION, mRewards.put(REWARD_WIDGET_INTERACTION, new Reward(REWARD_WIDGET_INTERACTION,
arcToNarc(mParser.getInt(KEY_AM_REWARD_WIDGET_INTERACTION_INSTANT, arcToCake(mParser.getInt(KEY_AM_REWARD_WIDGET_INTERACTION_INSTANT,
DEFAULT_AM_REWARD_WIDGET_INTERACTION_INSTANT)), DEFAULT_AM_REWARD_WIDGET_INTERACTION_INSTANT)),
arcToNarc(mParser.getInt(KEY_AM_REWARD_WIDGET_INTERACTION_ONGOING, arcToCake(mParser.getInt(KEY_AM_REWARD_WIDGET_INTERACTION_ONGOING,
DEFAULT_AM_REWARD_WIDGET_INTERACTION_ONGOING)), DEFAULT_AM_REWARD_WIDGET_INTERACTION_ONGOING)),
arcToNarc(mParser.getInt(KEY_AM_REWARD_WIDGET_INTERACTION_MAX, arcToCake(mParser.getInt(KEY_AM_REWARD_WIDGET_INTERACTION_MAX,
DEFAULT_AM_REWARD_WIDGET_INTERACTION_MAX)))); DEFAULT_AM_REWARD_WIDGET_INTERACTION_MAX))));
mRewards.put(REWARD_OTHER_USER_INTERACTION, mRewards.put(REWARD_OTHER_USER_INTERACTION,
new Reward(REWARD_OTHER_USER_INTERACTION, new Reward(REWARD_OTHER_USER_INTERACTION,
arcToNarc(mParser.getInt(KEY_AM_REWARD_OTHER_USER_INTERACTION_INSTANT, arcToCake(mParser.getInt(KEY_AM_REWARD_OTHER_USER_INTERACTION_INSTANT,
DEFAULT_AM_REWARD_OTHER_USER_INTERACTION_INSTANT)), DEFAULT_AM_REWARD_OTHER_USER_INTERACTION_INSTANT)),
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_AM_REWARD_OTHER_USER_INTERACTION_ONGOING, KEY_AM_REWARD_OTHER_USER_INTERACTION_ONGOING,
DEFAULT_AM_REWARD_OTHER_USER_INTERACTION_ONGOING)), DEFAULT_AM_REWARD_OTHER_USER_INTERACTION_ONGOING)),
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_AM_REWARD_OTHER_USER_INTERACTION_MAX, KEY_AM_REWARD_OTHER_USER_INTERACTION_MAX,
DEFAULT_AM_REWARD_OTHER_USER_INTERACTION_MAX)))); DEFAULT_AM_REWARD_OTHER_USER_INTERACTION_MAX))));
} }
@@ -364,14 +364,14 @@ public class AlarmManagerEconomicPolicy extends EconomicPolicy {
void dump(IndentingPrintWriter pw) { void dump(IndentingPrintWriter pw) {
pw.println("Min satiated balances:"); pw.println("Min satiated balances:");
pw.increaseIndent(); pw.increaseIndent();
pw.print("Exempted", narcToString(mMinSatiatedBalanceExempted)).println(); pw.print("Exempted", cakeToString(mMinSatiatedBalanceExempted)).println();
pw.print("Other", narcToString(mMinSatiatedBalanceOther)).println(); pw.print("Other", cakeToString(mMinSatiatedBalanceOther)).println();
pw.decreaseIndent(); pw.decreaseIndent();
pw.print("Max satiated balance", narcToString(mMaxSatiatedBalance)).println(); pw.print("Max satiated balance", cakeToString(mMaxSatiatedBalance)).println();
pw.print("Consumption limits: ["); pw.print("Consumption limits: [");
pw.print(narcToString(mInitialSatiatedConsumptionLimit)); pw.print(cakeToString(mInitialSatiatedConsumptionLimit));
pw.print(", "); pw.print(", ");
pw.print(narcToString(mHardSatiatedConsumptionLimit)); pw.print(cakeToString(mHardSatiatedConsumptionLimit));
pw.println("]"); pw.println("]");
pw.println(); pw.println();

View File

@@ -21,7 +21,7 @@ import static com.android.server.tare.Modifier.COST_MODIFIER_DEVICE_IDLE;
import static com.android.server.tare.Modifier.COST_MODIFIER_POWER_SAVE_MODE; import static com.android.server.tare.Modifier.COST_MODIFIER_POWER_SAVE_MODE;
import static com.android.server.tare.Modifier.COST_MODIFIER_PROCESS_STATE; import static com.android.server.tare.Modifier.COST_MODIFIER_PROCESS_STATE;
import static com.android.server.tare.Modifier.NUM_COST_MODIFIERS; import static com.android.server.tare.Modifier.NUM_COST_MODIFIERS;
import static com.android.server.tare.TareUtils.narcToString; import static com.android.server.tare.TareUtils.cakeToString;
import android.annotation.CallSuper; import android.annotation.CallSuper;
import android.annotation.IntDef; import android.annotation.IntDef;
@@ -203,7 +203,7 @@ public abstract class EconomicPolicy {
abstract long getMaxSatiatedBalance(); abstract long getMaxSatiatedBalance();
/** /**
* Returns the maximum number of narcs that should be consumed during a full 100% discharge * Returns the maximum number of cakes that should be consumed during a full 100% discharge
* cycle. This is the initial limit. The system may choose to increase the limit over time, * cycle. This is the initial limit. The system may choose to increase the limit over time,
* but the increased limit should never exceed the value returned from * but the increased limit should never exceed the value returned from
* {@link #getHardSatiatedConsumptionLimit()}. * {@link #getHardSatiatedConsumptionLimit()}.
@@ -211,7 +211,7 @@ public abstract class EconomicPolicy {
abstract long getInitialSatiatedConsumptionLimit(); abstract long getInitialSatiatedConsumptionLimit();
/** /**
* Returns the maximum number of narcs that should be consumed during a full 100% discharge * Returns the maximum number of cakes that should be consumed during a full 100% discharge
* cycle. This is the hard limit that should never be exceeded. * cycle. This is the hard limit that should never be exceeded.
*/ */
abstract long getHardSatiatedConsumptionLimit(); abstract long getHardSatiatedConsumptionLimit();
@@ -430,9 +430,9 @@ public abstract class EconomicPolicy {
pw.print(actionToString(action.id)); pw.print(actionToString(action.id));
pw.print(": "); pw.print(": ");
pw.print("ctp="); pw.print("ctp=");
pw.print(narcToString(action.costToProduce)); pw.print(cakeToString(action.costToProduce));
pw.print(", basePrice="); pw.print(", basePrice=");
pw.print(narcToString(action.basePrice)); pw.print(cakeToString(action.basePrice));
pw.println(); pw.println();
} }
@@ -440,11 +440,11 @@ public abstract class EconomicPolicy {
pw.print(rewardToString(reward.id)); pw.print(rewardToString(reward.id));
pw.print(": "); pw.print(": ");
pw.print("instant="); pw.print("instant=");
pw.print(narcToString(reward.instantReward)); pw.print(cakeToString(reward.instantReward));
pw.print(", ongoing/sec="); pw.print(", ongoing/sec=");
pw.print(narcToString(reward.ongoingRewardPerSecond)); pw.print(cakeToString(reward.ongoingRewardPerSecond));
pw.print(", maxDaily="); pw.print(", maxDaily=");
pw.print(narcToString(reward.maxDailyReward)); pw.print(cakeToString(reward.maxDailyReward));
pw.println(); pw.println();
} }
} }

View File

@@ -23,8 +23,8 @@ import static android.text.format.DateUtils.HOUR_IN_MILLIS;
import static android.text.format.DateUtils.MINUTE_IN_MILLIS; import static android.text.format.DateUtils.MINUTE_IN_MILLIS;
import static com.android.server.tare.TareUtils.appToString; import static com.android.server.tare.TareUtils.appToString;
import static com.android.server.tare.TareUtils.cakeToString;
import static com.android.server.tare.TareUtils.getCurrentTimeMillis; import static com.android.server.tare.TareUtils.getCurrentTimeMillis;
import static com.android.server.tare.TareUtils.narcToString;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.annotation.Nullable; import android.annotation.Nullable;
@@ -528,9 +528,9 @@ public class InternalResourceService extends SystemService {
void maybePerformQuantitativeEasingLocked() { void maybePerformQuantitativeEasingLocked() {
// We don't need to increase the limit if the device runs out of consumable credits // We don't need to increase the limit if the device runs out of consumable credits
// when the battery is low. // when the battery is low.
final long remainingConsumableNarcs = mScribe.getRemainingConsumableNarcsLocked(); final long remainingConsumableCakes = mScribe.getRemainingConsumableCakesLocked();
if (mCurrentBatteryLevel <= QUANTITATIVE_EASING_BATTERY_THRESHOLD if (mCurrentBatteryLevel <= QUANTITATIVE_EASING_BATTERY_THRESHOLD
|| remainingConsumableNarcs > 0) { || remainingConsumableCakes > 0) {
return; return;
} }
final long currentConsumptionLimit = mScribe.getSatiatedConsumptionLimitLocked(); final long currentConsumptionLimit = mScribe.getSatiatedConsumptionLimitLocked();
@@ -539,8 +539,8 @@ public class InternalResourceService extends SystemService {
final long newConsumptionLimit = Math.min(currentConsumptionLimit + shortfall, final long newConsumptionLimit = Math.min(currentConsumptionLimit + shortfall,
mCompleteEconomicPolicy.getHardSatiatedConsumptionLimit()); mCompleteEconomicPolicy.getHardSatiatedConsumptionLimit());
if (newConsumptionLimit != currentConsumptionLimit) { if (newConsumptionLimit != currentConsumptionLimit) {
Slog.i(TAG, "Increasing consumption limit from " + narcToString(currentConsumptionLimit) Slog.i(TAG, "Increasing consumption limit from " + cakeToString(currentConsumptionLimit)
+ " to " + narcToString(newConsumptionLimit)); + " to " + cakeToString(newConsumptionLimit));
mScribe.setConsumptionLimitLocked(newConsumptionLimit); mScribe.setConsumptionLimitLocked(newConsumptionLimit);
adjustCreditSupplyLocked(/* allowIncrease */ true); adjustCreditSupplyLocked(/* allowIncrease */ true);
} }
@@ -562,16 +562,16 @@ public class InternalResourceService extends SystemService {
@GuardedBy("mLock") @GuardedBy("mLock")
private void adjustCreditSupplyLocked(boolean allowIncrease) { private void adjustCreditSupplyLocked(boolean allowIncrease) {
final long newLimit = getConsumptionLimitLocked(); final long newLimit = getConsumptionLimitLocked();
final long remainingConsumableNarcs = mScribe.getRemainingConsumableNarcsLocked(); final long remainingConsumableCakes = mScribe.getRemainingConsumableCakesLocked();
if (remainingConsumableNarcs == newLimit) { if (remainingConsumableCakes == newLimit) {
return; return;
} }
if (remainingConsumableNarcs > newLimit) { if (remainingConsumableCakes > newLimit) {
mScribe.adjustRemainingConsumableNarcsLocked(newLimit - remainingConsumableNarcs); mScribe.adjustRemainingConsumableCakesLocked(newLimit - remainingConsumableCakes);
} else if (allowIncrease) { } else if (allowIncrease) {
final double perc = mCurrentBatteryLevel / 100d; final double perc = mCurrentBatteryLevel / 100d;
final long shortfall = newLimit - remainingConsumableNarcs; final long shortfall = newLimit - remainingConsumableCakes;
mScribe.adjustRemainingConsumableNarcsLocked((long) (perc * shortfall)); mScribe.adjustRemainingConsumableCakesLocked((long) (perc * shortfall));
} }
mAgent.onCreditSupplyChanged(); mAgent.onCreditSupplyChanged();
} }
@@ -919,7 +919,7 @@ public class InternalResourceService extends SystemService {
+ cost.price * (action.ongoingDurationMs / 1000); + cost.price * (action.ongoingDurationMs / 1000);
} }
return mAgent.getBalanceLocked(userId, pkgName) >= requiredBalance return mAgent.getBalanceLocked(userId, pkgName) >= requiredBalance
&& mScribe.getRemainingConsumableNarcsLocked() >= requiredBalance; && mScribe.getRemainingConsumableCakesLocked() >= requiredBalance;
} }
} }
@@ -947,7 +947,7 @@ public class InternalResourceService extends SystemService {
} }
final long minBalance = Math.min( final long minBalance = Math.min(
mAgent.getBalanceLocked(userId, pkgName), mAgent.getBalanceLocked(userId, pkgName),
mScribe.getRemainingConsumableNarcsLocked()); mScribe.getRemainingConsumableCakesLocked());
return minBalance * 1000 / totalCostPerSecond; return minBalance * 1000 / totalCostPerSecond;
} }
} }
@@ -1103,21 +1103,21 @@ public class InternalResourceService extends SystemService {
final long consumptionLimit = getConsumptionLimitLocked(); final long consumptionLimit = getConsumptionLimitLocked();
pw.print("Consumption limit (current/initial-satiated/current-satiated): "); pw.print("Consumption limit (current/initial-satiated/current-satiated): ");
pw.print(narcToString(consumptionLimit)); pw.print(cakeToString(consumptionLimit));
pw.print("/"); pw.print("/");
pw.print(narcToString(mCompleteEconomicPolicy.getInitialSatiatedConsumptionLimit())); pw.print(cakeToString(mCompleteEconomicPolicy.getInitialSatiatedConsumptionLimit()));
pw.print("/"); pw.print("/");
pw.println(narcToString(mScribe.getSatiatedConsumptionLimitLocked())); pw.println(cakeToString(mScribe.getSatiatedConsumptionLimitLocked()));
final long remainingConsumable = mScribe.getRemainingConsumableNarcsLocked(); final long remainingConsumable = mScribe.getRemainingConsumableCakesLocked();
pw.print("Goods remaining: "); pw.print("Goods remaining: ");
pw.print(narcToString(remainingConsumable)); pw.print(cakeToString(remainingConsumable));
pw.print(" ("); pw.print(" (");
pw.print(String.format("%.2f", 100f * remainingConsumable / consumptionLimit)); pw.print(String.format("%.2f", 100f * remainingConsumable / consumptionLimit));
pw.println("% of current limit)"); pw.println("% of current limit)");
pw.print("Device wealth: "); pw.print("Device wealth: ");
pw.println(narcToString(mScribe.getNarcsInCirculationForLoggingLocked())); pw.println(cakeToString(mScribe.getCakesInCirculationForLoggingLocked()));
pw.println(); pw.println();
pw.print("Exempted apps", mExemptedApps); pw.print("Exempted apps", mExemptedApps);

View File

@@ -106,8 +106,8 @@ import static com.android.server.tare.Modifier.COST_MODIFIER_CHARGING;
import static com.android.server.tare.Modifier.COST_MODIFIER_DEVICE_IDLE; import static com.android.server.tare.Modifier.COST_MODIFIER_DEVICE_IDLE;
import static com.android.server.tare.Modifier.COST_MODIFIER_POWER_SAVE_MODE; import static com.android.server.tare.Modifier.COST_MODIFIER_POWER_SAVE_MODE;
import static com.android.server.tare.Modifier.COST_MODIFIER_PROCESS_STATE; import static com.android.server.tare.Modifier.COST_MODIFIER_PROCESS_STATE;
import static com.android.server.tare.TareUtils.arcToNarc; import static com.android.server.tare.TareUtils.arcToCake;
import static com.android.server.tare.TareUtils.narcToString; import static com.android.server.tare.TareUtils.cakeToString;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.annotation.Nullable; import android.annotation.Nullable;
@@ -221,116 +221,116 @@ public class JobSchedulerEconomicPolicy extends EconomicPolicy {
Slog.e(TAG, "Global setting key incorrect: ", e); Slog.e(TAG, "Global setting key incorrect: ", e);
} }
mMinSatiatedBalanceExempted = arcToNarc( mMinSatiatedBalanceExempted = arcToCake(
mParser.getInt(KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED, mParser.getInt(KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED,
DEFAULT_JS_MIN_SATIATED_BALANCE_EXEMPTED)); DEFAULT_JS_MIN_SATIATED_BALANCE_EXEMPTED));
mMinSatiatedBalanceOther = arcToNarc( mMinSatiatedBalanceOther = arcToCake(
mParser.getInt(KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP, mParser.getInt(KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP,
DEFAULT_JS_MIN_SATIATED_BALANCE_OTHER_APP)); DEFAULT_JS_MIN_SATIATED_BALANCE_OTHER_APP));
mMaxSatiatedBalance = arcToNarc(mParser.getInt(KEY_JS_MAX_SATIATED_BALANCE, mMaxSatiatedBalance = arcToCake(mParser.getInt(KEY_JS_MAX_SATIATED_BALANCE,
DEFAULT_JS_MAX_SATIATED_BALANCE)); DEFAULT_JS_MAX_SATIATED_BALANCE));
mInitialSatiatedConsumptionLimit = arcToNarc(mParser.getInt( mInitialSatiatedConsumptionLimit = arcToCake(mParser.getInt(
KEY_JS_INITIAL_CONSUMPTION_LIMIT, DEFAULT_JS_INITIAL_CONSUMPTION_LIMIT)); KEY_JS_INITIAL_CONSUMPTION_LIMIT, DEFAULT_JS_INITIAL_CONSUMPTION_LIMIT));
mHardSatiatedConsumptionLimit = Math.max(mInitialSatiatedConsumptionLimit, mHardSatiatedConsumptionLimit = Math.max(mInitialSatiatedConsumptionLimit,
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_JS_HARD_CONSUMPTION_LIMIT, DEFAULT_JS_HARD_CONSUMPTION_LIMIT))); KEY_JS_HARD_CONSUMPTION_LIMIT, DEFAULT_JS_HARD_CONSUMPTION_LIMIT)));
mActions.put(ACTION_JOB_MAX_START, new Action(ACTION_JOB_MAX_START, mActions.put(ACTION_JOB_MAX_START, new Action(ACTION_JOB_MAX_START,
arcToNarc(mParser.getInt(KEY_JS_ACTION_JOB_MAX_START_CTP, arcToCake(mParser.getInt(KEY_JS_ACTION_JOB_MAX_START_CTP,
DEFAULT_JS_ACTION_JOB_MAX_START_CTP)), DEFAULT_JS_ACTION_JOB_MAX_START_CTP)),
arcToNarc(mParser.getInt(KEY_JS_ACTION_JOB_MAX_START_BASE_PRICE, arcToCake(mParser.getInt(KEY_JS_ACTION_JOB_MAX_START_BASE_PRICE,
DEFAULT_JS_ACTION_JOB_MAX_START_BASE_PRICE)))); DEFAULT_JS_ACTION_JOB_MAX_START_BASE_PRICE))));
mActions.put(ACTION_JOB_MAX_RUNNING, new Action(ACTION_JOB_MAX_RUNNING, mActions.put(ACTION_JOB_MAX_RUNNING, new Action(ACTION_JOB_MAX_RUNNING,
arcToNarc(mParser.getInt(KEY_JS_ACTION_JOB_MAX_RUNNING_CTP, arcToCake(mParser.getInt(KEY_JS_ACTION_JOB_MAX_RUNNING_CTP,
DEFAULT_JS_ACTION_JOB_MAX_RUNNING_CTP)), DEFAULT_JS_ACTION_JOB_MAX_RUNNING_CTP)),
arcToNarc(mParser.getInt(KEY_JS_ACTION_JOB_MAX_RUNNING_BASE_PRICE, arcToCake(mParser.getInt(KEY_JS_ACTION_JOB_MAX_RUNNING_BASE_PRICE,
DEFAULT_JS_ACTION_JOB_MAX_RUNNING_BASE_PRICE)))); DEFAULT_JS_ACTION_JOB_MAX_RUNNING_BASE_PRICE))));
mActions.put(ACTION_JOB_HIGH_START, new Action(ACTION_JOB_HIGH_START, mActions.put(ACTION_JOB_HIGH_START, new Action(ACTION_JOB_HIGH_START,
arcToNarc(mParser.getInt(KEY_JS_ACTION_JOB_HIGH_START_CTP, arcToCake(mParser.getInt(KEY_JS_ACTION_JOB_HIGH_START_CTP,
DEFAULT_JS_ACTION_JOB_HIGH_START_CTP)), DEFAULT_JS_ACTION_JOB_HIGH_START_CTP)),
arcToNarc(mParser.getInt(KEY_JS_ACTION_JOB_HIGH_START_BASE_PRICE, arcToCake(mParser.getInt(KEY_JS_ACTION_JOB_HIGH_START_BASE_PRICE,
DEFAULT_JS_ACTION_JOB_HIGH_START_BASE_PRICE)))); DEFAULT_JS_ACTION_JOB_HIGH_START_BASE_PRICE))));
mActions.put(ACTION_JOB_HIGH_RUNNING, new Action(ACTION_JOB_HIGH_RUNNING, mActions.put(ACTION_JOB_HIGH_RUNNING, new Action(ACTION_JOB_HIGH_RUNNING,
arcToNarc(mParser.getInt(KEY_JS_ACTION_JOB_HIGH_RUNNING_CTP, arcToCake(mParser.getInt(KEY_JS_ACTION_JOB_HIGH_RUNNING_CTP,
DEFAULT_JS_ACTION_JOB_HIGH_RUNNING_CTP)), DEFAULT_JS_ACTION_JOB_HIGH_RUNNING_CTP)),
arcToNarc(mParser.getInt(KEY_JS_ACTION_JOB_HIGH_RUNNING_BASE_PRICE, arcToCake(mParser.getInt(KEY_JS_ACTION_JOB_HIGH_RUNNING_BASE_PRICE,
DEFAULT_JS_ACTION_JOB_HIGH_RUNNING_BASE_PRICE)))); DEFAULT_JS_ACTION_JOB_HIGH_RUNNING_BASE_PRICE))));
mActions.put(ACTION_JOB_DEFAULT_START, new Action(ACTION_JOB_DEFAULT_START, mActions.put(ACTION_JOB_DEFAULT_START, new Action(ACTION_JOB_DEFAULT_START,
arcToNarc(mParser.getInt(KEY_JS_ACTION_JOB_DEFAULT_START_CTP, arcToCake(mParser.getInt(KEY_JS_ACTION_JOB_DEFAULT_START_CTP,
DEFAULT_JS_ACTION_JOB_DEFAULT_START_CTP)), DEFAULT_JS_ACTION_JOB_DEFAULT_START_CTP)),
arcToNarc(mParser.getInt(KEY_JS_ACTION_JOB_DEFAULT_START_BASE_PRICE, arcToCake(mParser.getInt(KEY_JS_ACTION_JOB_DEFAULT_START_BASE_PRICE,
DEFAULT_JS_ACTION_JOB_DEFAULT_START_BASE_PRICE)))); DEFAULT_JS_ACTION_JOB_DEFAULT_START_BASE_PRICE))));
mActions.put(ACTION_JOB_DEFAULT_RUNNING, new Action(ACTION_JOB_DEFAULT_RUNNING, mActions.put(ACTION_JOB_DEFAULT_RUNNING, new Action(ACTION_JOB_DEFAULT_RUNNING,
arcToNarc(mParser.getInt(KEY_JS_ACTION_JOB_DEFAULT_RUNNING_CTP, arcToCake(mParser.getInt(KEY_JS_ACTION_JOB_DEFAULT_RUNNING_CTP,
DEFAULT_JS_ACTION_JOB_DEFAULT_RUNNING_CTP)), DEFAULT_JS_ACTION_JOB_DEFAULT_RUNNING_CTP)),
arcToNarc(mParser.getInt(KEY_JS_ACTION_JOB_DEFAULT_RUNNING_BASE_PRICE, arcToCake(mParser.getInt(KEY_JS_ACTION_JOB_DEFAULT_RUNNING_BASE_PRICE,
DEFAULT_JS_ACTION_JOB_DEFAULT_RUNNING_BASE_PRICE)))); DEFAULT_JS_ACTION_JOB_DEFAULT_RUNNING_BASE_PRICE))));
mActions.put(ACTION_JOB_LOW_START, new Action(ACTION_JOB_LOW_START, mActions.put(ACTION_JOB_LOW_START, new Action(ACTION_JOB_LOW_START,
arcToNarc(mParser.getInt(KEY_JS_ACTION_JOB_LOW_START_CTP, arcToCake(mParser.getInt(KEY_JS_ACTION_JOB_LOW_START_CTP,
DEFAULT_JS_ACTION_JOB_LOW_START_CTP)), DEFAULT_JS_ACTION_JOB_LOW_START_CTP)),
arcToNarc(mParser.getInt(KEY_JS_ACTION_JOB_LOW_START_BASE_PRICE, arcToCake(mParser.getInt(KEY_JS_ACTION_JOB_LOW_START_BASE_PRICE,
DEFAULT_JS_ACTION_JOB_LOW_START_BASE_PRICE)))); DEFAULT_JS_ACTION_JOB_LOW_START_BASE_PRICE))));
mActions.put(ACTION_JOB_LOW_RUNNING, new Action(ACTION_JOB_LOW_RUNNING, mActions.put(ACTION_JOB_LOW_RUNNING, new Action(ACTION_JOB_LOW_RUNNING,
arcToNarc(mParser.getInt(KEY_JS_ACTION_JOB_LOW_RUNNING_CTP, arcToCake(mParser.getInt(KEY_JS_ACTION_JOB_LOW_RUNNING_CTP,
DEFAULT_JS_ACTION_JOB_LOW_RUNNING_CTP)), DEFAULT_JS_ACTION_JOB_LOW_RUNNING_CTP)),
arcToNarc(mParser.getInt(KEY_JS_ACTION_JOB_LOW_RUNNING_BASE_PRICE, arcToCake(mParser.getInt(KEY_JS_ACTION_JOB_LOW_RUNNING_BASE_PRICE,
DEFAULT_JS_ACTION_JOB_LOW_RUNNING_BASE_PRICE)))); DEFAULT_JS_ACTION_JOB_LOW_RUNNING_BASE_PRICE))));
mActions.put(ACTION_JOB_MIN_START, new Action(ACTION_JOB_MIN_START, mActions.put(ACTION_JOB_MIN_START, new Action(ACTION_JOB_MIN_START,
arcToNarc(mParser.getInt(KEY_JS_ACTION_JOB_MIN_START_CTP, arcToCake(mParser.getInt(KEY_JS_ACTION_JOB_MIN_START_CTP,
DEFAULT_JS_ACTION_JOB_MIN_START_CTP)), DEFAULT_JS_ACTION_JOB_MIN_START_CTP)),
arcToNarc(mParser.getInt(KEY_JS_ACTION_JOB_MIN_START_BASE_PRICE, arcToCake(mParser.getInt(KEY_JS_ACTION_JOB_MIN_START_BASE_PRICE,
DEFAULT_JS_ACTION_JOB_MIN_START_BASE_PRICE)))); DEFAULT_JS_ACTION_JOB_MIN_START_BASE_PRICE))));
mActions.put(ACTION_JOB_MIN_RUNNING, new Action(ACTION_JOB_MIN_RUNNING, mActions.put(ACTION_JOB_MIN_RUNNING, new Action(ACTION_JOB_MIN_RUNNING,
arcToNarc(mParser.getInt(KEY_JS_ACTION_JOB_MIN_RUNNING_CTP, arcToCake(mParser.getInt(KEY_JS_ACTION_JOB_MIN_RUNNING_CTP,
DEFAULT_JS_ACTION_JOB_MIN_RUNNING_CTP)), DEFAULT_JS_ACTION_JOB_MIN_RUNNING_CTP)),
arcToNarc(mParser.getInt(KEY_JS_ACTION_JOB_MIN_RUNNING_BASE_PRICE, arcToCake(mParser.getInt(KEY_JS_ACTION_JOB_MIN_RUNNING_BASE_PRICE,
DEFAULT_JS_ACTION_JOB_MIN_RUNNING_BASE_PRICE)))); DEFAULT_JS_ACTION_JOB_MIN_RUNNING_BASE_PRICE))));
mActions.put(ACTION_JOB_TIMEOUT, new Action(ACTION_JOB_TIMEOUT, mActions.put(ACTION_JOB_TIMEOUT, new Action(ACTION_JOB_TIMEOUT,
arcToNarc(mParser.getInt(KEY_JS_ACTION_JOB_TIMEOUT_PENALTY_CTP, arcToCake(mParser.getInt(KEY_JS_ACTION_JOB_TIMEOUT_PENALTY_CTP,
DEFAULT_JS_ACTION_JOB_TIMEOUT_PENALTY_CTP)), DEFAULT_JS_ACTION_JOB_TIMEOUT_PENALTY_CTP)),
arcToNarc(mParser.getInt(KEY_JS_ACTION_JOB_TIMEOUT_PENALTY_BASE_PRICE, arcToCake(mParser.getInt(KEY_JS_ACTION_JOB_TIMEOUT_PENALTY_BASE_PRICE,
DEFAULT_JS_ACTION_JOB_TIMEOUT_PENALTY_BASE_PRICE)))); DEFAULT_JS_ACTION_JOB_TIMEOUT_PENALTY_BASE_PRICE))));
mRewards.put(REWARD_TOP_ACTIVITY, new Reward(REWARD_TOP_ACTIVITY, mRewards.put(REWARD_TOP_ACTIVITY, new Reward(REWARD_TOP_ACTIVITY,
arcToNarc(mParser.getInt(KEY_JS_REWARD_TOP_ACTIVITY_INSTANT, arcToCake(mParser.getInt(KEY_JS_REWARD_TOP_ACTIVITY_INSTANT,
DEFAULT_JS_REWARD_TOP_ACTIVITY_INSTANT)), DEFAULT_JS_REWARD_TOP_ACTIVITY_INSTANT)),
(long) (arcToNarc(1) * mParser.getFloat(KEY_JS_REWARD_TOP_ACTIVITY_ONGOING, (long) (arcToCake(1) * mParser.getFloat(KEY_JS_REWARD_TOP_ACTIVITY_ONGOING,
DEFAULT_JS_REWARD_TOP_ACTIVITY_ONGOING)), DEFAULT_JS_REWARD_TOP_ACTIVITY_ONGOING)),
arcToNarc(mParser.getInt(KEY_JS_REWARD_TOP_ACTIVITY_MAX, arcToCake(mParser.getInt(KEY_JS_REWARD_TOP_ACTIVITY_MAX,
DEFAULT_JS_REWARD_TOP_ACTIVITY_MAX)))); DEFAULT_JS_REWARD_TOP_ACTIVITY_MAX))));
mRewards.put(REWARD_NOTIFICATION_SEEN, new Reward(REWARD_NOTIFICATION_SEEN, mRewards.put(REWARD_NOTIFICATION_SEEN, new Reward(REWARD_NOTIFICATION_SEEN,
arcToNarc(mParser.getInt(KEY_JS_REWARD_NOTIFICATION_SEEN_INSTANT, arcToCake(mParser.getInt(KEY_JS_REWARD_NOTIFICATION_SEEN_INSTANT,
DEFAULT_JS_REWARD_NOTIFICATION_SEEN_INSTANT)), DEFAULT_JS_REWARD_NOTIFICATION_SEEN_INSTANT)),
arcToNarc(mParser.getInt(KEY_JS_REWARD_NOTIFICATION_SEEN_ONGOING, arcToCake(mParser.getInt(KEY_JS_REWARD_NOTIFICATION_SEEN_ONGOING,
DEFAULT_JS_REWARD_NOTIFICATION_SEEN_ONGOING)), DEFAULT_JS_REWARD_NOTIFICATION_SEEN_ONGOING)),
arcToNarc(mParser.getInt(KEY_JS_REWARD_NOTIFICATION_SEEN_MAX, arcToCake(mParser.getInt(KEY_JS_REWARD_NOTIFICATION_SEEN_MAX,
DEFAULT_JS_REWARD_NOTIFICATION_SEEN_MAX)))); DEFAULT_JS_REWARD_NOTIFICATION_SEEN_MAX))));
mRewards.put(REWARD_NOTIFICATION_INTERACTION, mRewards.put(REWARD_NOTIFICATION_INTERACTION,
new Reward(REWARD_NOTIFICATION_INTERACTION, new Reward(REWARD_NOTIFICATION_INTERACTION,
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_JS_REWARD_NOTIFICATION_INTERACTION_INSTANT, KEY_JS_REWARD_NOTIFICATION_INTERACTION_INSTANT,
DEFAULT_JS_REWARD_NOTIFICATION_INTERACTION_INSTANT)), DEFAULT_JS_REWARD_NOTIFICATION_INTERACTION_INSTANT)),
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_JS_REWARD_NOTIFICATION_INTERACTION_ONGOING, KEY_JS_REWARD_NOTIFICATION_INTERACTION_ONGOING,
DEFAULT_JS_REWARD_NOTIFICATION_INTERACTION_ONGOING)), DEFAULT_JS_REWARD_NOTIFICATION_INTERACTION_ONGOING)),
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_JS_REWARD_NOTIFICATION_INTERACTION_MAX, KEY_JS_REWARD_NOTIFICATION_INTERACTION_MAX,
DEFAULT_JS_REWARD_NOTIFICATION_INTERACTION_MAX)))); DEFAULT_JS_REWARD_NOTIFICATION_INTERACTION_MAX))));
mRewards.put(REWARD_WIDGET_INTERACTION, new Reward(REWARD_WIDGET_INTERACTION, mRewards.put(REWARD_WIDGET_INTERACTION, new Reward(REWARD_WIDGET_INTERACTION,
arcToNarc(mParser.getInt(KEY_JS_REWARD_WIDGET_INTERACTION_INSTANT, arcToCake(mParser.getInt(KEY_JS_REWARD_WIDGET_INTERACTION_INSTANT,
DEFAULT_JS_REWARD_WIDGET_INTERACTION_INSTANT)), DEFAULT_JS_REWARD_WIDGET_INTERACTION_INSTANT)),
arcToNarc(mParser.getInt(KEY_JS_REWARD_WIDGET_INTERACTION_ONGOING, arcToCake(mParser.getInt(KEY_JS_REWARD_WIDGET_INTERACTION_ONGOING,
DEFAULT_JS_REWARD_WIDGET_INTERACTION_ONGOING)), DEFAULT_JS_REWARD_WIDGET_INTERACTION_ONGOING)),
arcToNarc(mParser.getInt(KEY_JS_REWARD_WIDGET_INTERACTION_MAX, arcToCake(mParser.getInt(KEY_JS_REWARD_WIDGET_INTERACTION_MAX,
DEFAULT_JS_REWARD_WIDGET_INTERACTION_MAX)))); DEFAULT_JS_REWARD_WIDGET_INTERACTION_MAX))));
mRewards.put(REWARD_OTHER_USER_INTERACTION, mRewards.put(REWARD_OTHER_USER_INTERACTION,
new Reward(REWARD_OTHER_USER_INTERACTION, new Reward(REWARD_OTHER_USER_INTERACTION,
arcToNarc(mParser.getInt(KEY_JS_REWARD_OTHER_USER_INTERACTION_INSTANT, arcToCake(mParser.getInt(KEY_JS_REWARD_OTHER_USER_INTERACTION_INSTANT,
DEFAULT_JS_REWARD_OTHER_USER_INTERACTION_INSTANT)), DEFAULT_JS_REWARD_OTHER_USER_INTERACTION_INSTANT)),
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_JS_REWARD_OTHER_USER_INTERACTION_ONGOING, KEY_JS_REWARD_OTHER_USER_INTERACTION_ONGOING,
DEFAULT_JS_REWARD_OTHER_USER_INTERACTION_ONGOING)), DEFAULT_JS_REWARD_OTHER_USER_INTERACTION_ONGOING)),
arcToNarc(mParser.getInt( arcToCake(mParser.getInt(
KEY_JS_REWARD_OTHER_USER_INTERACTION_MAX, KEY_JS_REWARD_OTHER_USER_INTERACTION_MAX,
DEFAULT_JS_REWARD_OTHER_USER_INTERACTION_MAX)))); DEFAULT_JS_REWARD_OTHER_USER_INTERACTION_MAX))));
} }
@@ -339,14 +339,14 @@ public class JobSchedulerEconomicPolicy extends EconomicPolicy {
void dump(IndentingPrintWriter pw) { void dump(IndentingPrintWriter pw) {
pw.println("Min satiated balances:"); pw.println("Min satiated balances:");
pw.increaseIndent(); pw.increaseIndent();
pw.print("Exempted", narcToString(mMinSatiatedBalanceExempted)).println(); pw.print("Exempted", cakeToString(mMinSatiatedBalanceExempted)).println();
pw.print("Other", narcToString(mMinSatiatedBalanceOther)).println(); pw.print("Other", cakeToString(mMinSatiatedBalanceOther)).println();
pw.decreaseIndent(); pw.decreaseIndent();
pw.print("Max satiated balance", narcToString(mMaxSatiatedBalance)).println(); pw.print("Max satiated balance", cakeToString(mMaxSatiatedBalance)).println();
pw.print("Consumption limits: ["); pw.print("Consumption limits: [");
pw.print(narcToString(mInitialSatiatedConsumptionLimit)); pw.print(cakeToString(mInitialSatiatedConsumptionLimit));
pw.print(", "); pw.print(", ");
pw.print(narcToString(mHardSatiatedConsumptionLimit)); pw.print(cakeToString(mHardSatiatedConsumptionLimit));
pw.println("]"); pw.println("]");
pw.println(); pw.println();

View File

@@ -18,9 +18,9 @@ package com.android.server.tare;
import static android.text.format.DateUtils.HOUR_IN_MILLIS; import static android.text.format.DateUtils.HOUR_IN_MILLIS;
import static com.android.server.tare.TareUtils.cakeToString;
import static com.android.server.tare.TareUtils.dumpTime; import static com.android.server.tare.TareUtils.dumpTime;
import static com.android.server.tare.TareUtils.getCurrentTimeMillis; import static com.android.server.tare.TareUtils.getCurrentTimeMillis;
import static com.android.server.tare.TareUtils.narcToString;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.annotation.Nullable; import android.annotation.Nullable;
@@ -129,7 +129,7 @@ class Ledger {
} }
void dump(IndentingPrintWriter pw, int numRecentTransactions) { void dump(IndentingPrintWriter pw, int numRecentTransactions) {
pw.print("Current balance", narcToString(getCurrentBalance())).println(); pw.print("Current balance", cakeToString(getCurrentBalance())).println();
final int size = mTransactions.size(); final int size = mTransactions.size();
for (int i = Math.max(0, size - numRecentTransactions); i < size; ++i) { for (int i = Math.max(0, size - numRecentTransactions); i < size; ++i) {
@@ -146,9 +146,9 @@ class Ledger {
pw.print(")"); pw.print(")");
} }
pw.print(" --> "); pw.print(" --> ");
pw.print(narcToString(transaction.delta)); pw.print(cakeToString(transaction.delta));
pw.print(" (ctp="); pw.print(" (ctp=");
pw.print(narcToString(transaction.ctp)); pw.print(cakeToString(transaction.ctp));
pw.println(")"); pw.println(")");
} }
} }

View File

@@ -105,5 +105,7 @@ consumed.
* ARC: Android Resource Credits are the "currency" units used as an abstraction layer over the real * ARC: Android Resource Credits are the "currency" units used as an abstraction layer over the real
battery drain. They allow the system to standardize costs and prices across various devices. battery drain. They allow the system to standardize costs and prices across various devices.
* Cake: A lie; also the smallest unit of an ARC (1 cake = one-billionth of an ARC = 1 nano-ARC).
When the apps request to do something, we shall let them eat cake.
* NARC: The smallest unit of an ARC. A narc is 1 nano-ARC. * NARC: The smallest unit of an ARC. A narc is 1 nano-ARC.
* Satiated: used to refer to when the device is fully charged (at 100% battery level) * Satiated: used to refer to when the device is fully charged (at 100% battery level)

View File

@@ -84,7 +84,7 @@ public class Scribe {
private static final String XML_ATTR_USER_ID = "userId"; private static final String XML_ATTR_USER_ID = "userId";
private static final String XML_ATTR_VERSION = "version"; private static final String XML_ATTR_VERSION = "version";
private static final String XML_ATTR_LAST_RECLAMATION_TIME = "lastReclamationTime"; private static final String XML_ATTR_LAST_RECLAMATION_TIME = "lastReclamationTime";
private static final String XML_ATTR_REMAINING_CONSUMABLE_NARCS = "remainingConsumableNarcs"; private static final String XML_ATTR_REMAINING_CONSUMABLE_CAKES = "remainingConsumableCakes";
private static final String XML_ATTR_CONSUMPTION_LIMIT = "consumptionLimit"; private static final String XML_ATTR_CONSUMPTION_LIMIT = "consumptionLimit";
/** Version of the file schema. */ /** Version of the file schema. */
@@ -100,7 +100,7 @@ public class Scribe {
@GuardedBy("mIrs.getLock()") @GuardedBy("mIrs.getLock()")
private long mSatiatedConsumptionLimit; private long mSatiatedConsumptionLimit;
@GuardedBy("mIrs.getLock()") @GuardedBy("mIrs.getLock()")
private long mRemainingConsumableNarcs; private long mRemainingConsumableCakes;
@GuardedBy("mIrs.getLock()") @GuardedBy("mIrs.getLock()")
private final SparseArrayMap<String, Ledger> mLedgers = new SparseArrayMap<>(); private final SparseArrayMap<String, Ledger> mLedgers = new SparseArrayMap<>();
@@ -122,10 +122,10 @@ public class Scribe {
} }
@GuardedBy("mIrs.getLock()") @GuardedBy("mIrs.getLock()")
void adjustRemainingConsumableNarcsLocked(long delta) { void adjustRemainingConsumableCakesLocked(long delta) {
if (delta != 0) { if (delta != 0) {
// No point doing any work if the change is 0. // No point doing any work if the change is 0.
mRemainingConsumableNarcs += delta; mRemainingConsumableCakes += delta;
postWrite(); postWrite();
} }
} }
@@ -168,7 +168,7 @@ public class Scribe {
* call it for normal operation. * call it for normal operation.
*/ */
@GuardedBy("mIrs.getLock()") @GuardedBy("mIrs.getLock()")
long getNarcsInCirculationForLoggingLocked() { long getCakesInCirculationForLoggingLocked() {
long sum = 0; long sum = 0;
for (int uIdx = mLedgers.numMaps() - 1; uIdx >= 0; --uIdx) { for (int uIdx = mLedgers.numMaps() - 1; uIdx >= 0; --uIdx) {
for (int pIdx = mLedgers.numElementsForKeyAt(uIdx) - 1; pIdx >= 0; --pIdx) { for (int pIdx = mLedgers.numElementsForKeyAt(uIdx) - 1; pIdx >= 0; --pIdx) {
@@ -178,10 +178,10 @@ public class Scribe {
return sum; return sum;
} }
/** Returns the total amount of narcs that remain to be consumed. */ /** Returns the total amount of cakes that remain to be consumed. */
@GuardedBy("mIrs.getLock()") @GuardedBy("mIrs.getLock()")
long getRemainingConsumableNarcsLocked() { long getRemainingConsumableCakesLocked() {
return mRemainingConsumableNarcs; return mRemainingConsumableCakes;
} }
@GuardedBy("mIrs.getLock()") @GuardedBy("mIrs.getLock()")
@@ -189,11 +189,11 @@ public class Scribe {
mLedgers.clear(); mLedgers.clear();
if (!recordExists()) { if (!recordExists()) {
mSatiatedConsumptionLimit = mIrs.getInitialSatiatedConsumptionLimitLocked(); mSatiatedConsumptionLimit = mIrs.getInitialSatiatedConsumptionLimitLocked();
mRemainingConsumableNarcs = mIrs.getConsumptionLimitLocked(); mRemainingConsumableCakes = mIrs.getConsumptionLimitLocked();
return; return;
} }
mSatiatedConsumptionLimit = 0; mSatiatedConsumptionLimit = 0;
mRemainingConsumableNarcs = 0; mRemainingConsumableCakes = 0;
final SparseArray<ArraySet<String>> installedPackagesPerUser = new SparseArray<>(); final SparseArray<ArraySet<String>> installedPackagesPerUser = new SparseArray<>();
final List<PackageInfo> installedPackages = mIrs.getInstalledPackages(); final List<PackageInfo> installedPackages = mIrs.getInstalledPackages();
@@ -254,8 +254,8 @@ public class Scribe {
parser.getAttributeLong(null, XML_ATTR_CONSUMPTION_LIMIT, parser.getAttributeLong(null, XML_ATTR_CONSUMPTION_LIMIT,
mIrs.getInitialSatiatedConsumptionLimitLocked()); mIrs.getInitialSatiatedConsumptionLimitLocked());
final long consumptionLimit = mIrs.getConsumptionLimitLocked(); final long consumptionLimit = mIrs.getConsumptionLimitLocked();
mRemainingConsumableNarcs = Math.min(consumptionLimit, mRemainingConsumableCakes = Math.min(consumptionLimit,
parser.getAttributeLong(null, XML_ATTR_REMAINING_CONSUMABLE_NARCS, parser.getAttributeLong(null, XML_ATTR_REMAINING_CONSUMABLE_CAKES,
consumptionLimit)); consumptionLimit));
break; break;
case XML_TAG_USER: case XML_TAG_USER:
@@ -285,11 +285,11 @@ public class Scribe {
@GuardedBy("mIrs.getLock()") @GuardedBy("mIrs.getLock()")
void setConsumptionLimitLocked(long limit) { void setConsumptionLimitLocked(long limit) {
if (mRemainingConsumableNarcs > limit) { if (mRemainingConsumableCakes > limit) {
mRemainingConsumableNarcs = limit; mRemainingConsumableCakes = limit;
} else if (limit > mSatiatedConsumptionLimit) { } else if (limit > mSatiatedConsumptionLimit) {
final long diff = mSatiatedConsumptionLimit - mRemainingConsumableNarcs; final long diff = mSatiatedConsumptionLimit - mRemainingConsumableCakes;
mRemainingConsumableNarcs = (limit - diff); mRemainingConsumableCakes = (limit - diff);
} }
mSatiatedConsumptionLimit = limit; mSatiatedConsumptionLimit = limit;
postWrite(); postWrite();
@@ -306,7 +306,7 @@ public class Scribe {
TareHandlerThread.getHandler().removeCallbacks(mCleanRunnable); TareHandlerThread.getHandler().removeCallbacks(mCleanRunnable);
TareHandlerThread.getHandler().removeCallbacks(mWriteRunnable); TareHandlerThread.getHandler().removeCallbacks(mWriteRunnable);
mLedgers.clear(); mLedgers.clear();
mRemainingConsumableNarcs = 0; mRemainingConsumableCakes = 0;
mSatiatedConsumptionLimit = 0; mSatiatedConsumptionLimit = 0;
mLastReclamationTime = 0; mLastReclamationTime = 0;
} }
@@ -491,8 +491,8 @@ public class Scribe {
out.startTag(null, XML_TAG_HIGH_LEVEL_STATE); out.startTag(null, XML_TAG_HIGH_LEVEL_STATE);
out.attributeLong(null, XML_ATTR_LAST_RECLAMATION_TIME, mLastReclamationTime); out.attributeLong(null, XML_ATTR_LAST_RECLAMATION_TIME, mLastReclamationTime);
out.attributeLong(null, XML_ATTR_CONSUMPTION_LIMIT, mSatiatedConsumptionLimit); out.attributeLong(null, XML_ATTR_CONSUMPTION_LIMIT, mSatiatedConsumptionLimit);
out.attributeLong(null, XML_ATTR_REMAINING_CONSUMABLE_NARCS, out.attributeLong(null, XML_ATTR_REMAINING_CONSUMABLE_CAKES,
mRemainingConsumableNarcs); mRemainingConsumableCakes);
out.endTag(null, XML_TAG_HIGH_LEVEL_STATE); out.endTag(null, XML_TAG_HIGH_LEVEL_STATE);
for (int uIdx = mLedgers.numMaps() - 1; uIdx >= 0; --uIdx) { for (int uIdx = mLedgers.numMaps() - 1; uIdx >= 0; --uIdx) {

View File

@@ -26,7 +26,7 @@ import java.text.SimpleDateFormat;
import java.time.Clock; import java.time.Clock;
class TareUtils { class TareUtils {
private static final long NARC_IN_ARC = 1_000_000_000L; private static final long CAKE_IN_ARC = 1_000_000_000L;
@SuppressLint("SimpleDateFormat") @SuppressLint("SimpleDateFormat")
private static final SimpleDateFormat sDumpDateFormat = private static final SimpleDateFormat sDumpDateFormat =
@@ -35,8 +35,8 @@ class TareUtils {
@VisibleForTesting @VisibleForTesting
static Clock sSystemClock = Clock.systemUTC(); static Clock sSystemClock = Clock.systemUTC();
static long arcToNarc(int arcs) { static long arcToCake(int arcs) {
return arcs * NARC_IN_ARC; return arcs * CAKE_IN_ARC;
} }
static void dumpTime(IndentingPrintWriter pw, long time) { static void dumpTime(IndentingPrintWriter pw, long time) {
@@ -47,26 +47,26 @@ class TareUtils {
return sSystemClock.millis(); return sSystemClock.millis();
} }
static int narcToArc(long narcs) { static int cakeToArc(long cakes) {
return (int) (narcs / NARC_IN_ARC); return (int) (cakes / CAKE_IN_ARC);
} }
@NonNull @NonNull
static String narcToString(long narcs) { static String cakeToString(long cakes) {
if (narcs == 0) { if (cakes == 0) {
return "0 ARCs"; return "0 ARCs";
} }
final long sub = Math.abs(narcs) % NARC_IN_ARC; final long sub = Math.abs(cakes) % CAKE_IN_ARC;
final long arcs = narcToArc(narcs); final long arcs = cakeToArc(cakes);
if (arcs == 0) { if (arcs == 0) {
return sub == 1 return sub == 1
? sub + " narc" ? sub + " cake"
: sub + " narcs"; : sub + " cakes";
} }
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append(arcs); sb.append(arcs);
if (sub > 0) { if (sub > 0) {
sb.append(".").append(sub / (NARC_IN_ARC / 1000)); sb.append(".").append(sub / (CAKE_IN_ARC / 1000));
} }
sb.append(" ARC"); sb.append(" ARC");
if (arcs != 1 || sub > 0) { if (arcs != 1 || sub > 0) {

View File

@@ -107,7 +107,7 @@ public class ScribeTest {
@Test @Test
public void testWriteHighLevelStateToDisk() { public void testWriteHighLevelStateToDisk() {
long lastReclamationTime = System.currentTimeMillis(); long lastReclamationTime = System.currentTimeMillis();
long remainingConsumableNarcs = 2000L; long remainingConsumableCakes = 2000L;
long consumptionLimit = 500_000L; long consumptionLimit = 500_000L;
when(mIrs.getConsumptionLimitLocked()).thenReturn(consumptionLimit); when(mIrs.getConsumptionLimitLocked()).thenReturn(consumptionLimit);
@@ -118,20 +118,20 @@ public class ScribeTest {
ledger.recordTransaction(new Ledger.Transaction(0, 1000L, 1, null, -5000, 3000)); ledger.recordTransaction(new Ledger.Transaction(0, 1000L, 1, null, -5000, 3000));
mScribeUnderTest.setLastReclamationTimeLocked(lastReclamationTime); mScribeUnderTest.setLastReclamationTimeLocked(lastReclamationTime);
mScribeUnderTest.setConsumptionLimitLocked(consumptionLimit); mScribeUnderTest.setConsumptionLimitLocked(consumptionLimit);
mScribeUnderTest.adjustRemainingConsumableNarcsLocked( mScribeUnderTest.adjustRemainingConsumableCakesLocked(
remainingConsumableNarcs - consumptionLimit); remainingConsumableCakes - consumptionLimit);
assertEquals(lastReclamationTime, mScribeUnderTest.getLastReclamationTimeLocked()); assertEquals(lastReclamationTime, mScribeUnderTest.getLastReclamationTimeLocked());
assertEquals(remainingConsumableNarcs, assertEquals(remainingConsumableCakes,
mScribeUnderTest.getRemainingConsumableNarcsLocked()); mScribeUnderTest.getRemainingConsumableCakesLocked());
assertEquals(consumptionLimit, mScribeUnderTest.getSatiatedConsumptionLimitLocked()); assertEquals(consumptionLimit, mScribeUnderTest.getSatiatedConsumptionLimitLocked());
mScribeUnderTest.writeImmediatelyForTesting(); mScribeUnderTest.writeImmediatelyForTesting();
mScribeUnderTest.loadFromDiskLocked(); mScribeUnderTest.loadFromDiskLocked();
assertEquals(lastReclamationTime, mScribeUnderTest.getLastReclamationTimeLocked()); assertEquals(lastReclamationTime, mScribeUnderTest.getLastReclamationTimeLocked());
assertEquals(remainingConsumableNarcs, assertEquals(remainingConsumableCakes,
mScribeUnderTest.getRemainingConsumableNarcsLocked()); mScribeUnderTest.getRemainingConsumableCakesLocked());
assertEquals(consumptionLimit, mScribeUnderTest.getSatiatedConsumptionLimitLocked()); assertEquals(consumptionLimit, mScribeUnderTest.getSatiatedConsumptionLimitLocked());
} }
@@ -234,32 +234,32 @@ public class ScribeTest {
@Test @Test
public void testChangingConsumable() { public void testChangingConsumable() {
assertEquals(0, mScribeUnderTest.getSatiatedConsumptionLimitLocked()); assertEquals(0, mScribeUnderTest.getSatiatedConsumptionLimitLocked());
assertEquals(0, mScribeUnderTest.getRemainingConsumableNarcsLocked()); assertEquals(0, mScribeUnderTest.getRemainingConsumableCakesLocked());
// Limit increased, so remaining value should be adjusted as well // Limit increased, so remaining value should be adjusted as well
mScribeUnderTest.setConsumptionLimitLocked(1000); mScribeUnderTest.setConsumptionLimitLocked(1000);
assertEquals(1000, mScribeUnderTest.getSatiatedConsumptionLimitLocked()); assertEquals(1000, mScribeUnderTest.getSatiatedConsumptionLimitLocked());
assertEquals(1000, mScribeUnderTest.getRemainingConsumableNarcsLocked()); assertEquals(1000, mScribeUnderTest.getRemainingConsumableCakesLocked());
// Limit decreased below remaining, so remaining value should be adjusted as well // Limit decreased below remaining, so remaining value should be adjusted as well
mScribeUnderTest.setConsumptionLimitLocked(500); mScribeUnderTest.setConsumptionLimitLocked(500);
assertEquals(500, mScribeUnderTest.getSatiatedConsumptionLimitLocked()); assertEquals(500, mScribeUnderTest.getSatiatedConsumptionLimitLocked());
assertEquals(500, mScribeUnderTest.getRemainingConsumableNarcsLocked()); assertEquals(500, mScribeUnderTest.getRemainingConsumableCakesLocked());
mScribeUnderTest.adjustRemainingConsumableNarcsLocked(-100); mScribeUnderTest.adjustRemainingConsumableCakesLocked(-100);
assertEquals(500, mScribeUnderTest.getSatiatedConsumptionLimitLocked()); assertEquals(500, mScribeUnderTest.getSatiatedConsumptionLimitLocked());
assertEquals(400, mScribeUnderTest.getRemainingConsumableNarcsLocked()); assertEquals(400, mScribeUnderTest.getRemainingConsumableCakesLocked());
// Limit increased, so remaining value should be adjusted by the difference as well // Limit increased, so remaining value should be adjusted by the difference as well
mScribeUnderTest.setConsumptionLimitLocked(1000); mScribeUnderTest.setConsumptionLimitLocked(1000);
assertEquals(1000, mScribeUnderTest.getSatiatedConsumptionLimitLocked()); assertEquals(1000, mScribeUnderTest.getSatiatedConsumptionLimitLocked());
assertEquals(900, mScribeUnderTest.getRemainingConsumableNarcsLocked()); assertEquals(900, mScribeUnderTest.getRemainingConsumableCakesLocked());
// Limit decreased, but above remaining, so remaining value should left alone // Limit decreased, but above remaining, so remaining value should left alone
mScribeUnderTest.setConsumptionLimitLocked(950); mScribeUnderTest.setConsumptionLimitLocked(950);
assertEquals(950, mScribeUnderTest.getSatiatedConsumptionLimitLocked()); assertEquals(950, mScribeUnderTest.getSatiatedConsumptionLimitLocked());
assertEquals(900, mScribeUnderTest.getRemainingConsumableNarcsLocked()); assertEquals(900, mScribeUnderTest.getRemainingConsumableCakesLocked());
} }
private void assertLedgersEqual(Ledger expected, Ledger actual) { private void assertLedgersEqual(Ledger expected, Ledger actual) {