summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmds/statsd/src/StatsLogProcessor.cpp2
-rw-r--r--cmds/statsd/src/StatsLogProcessor.h4
-rw-r--r--cmds/statsd/src/StatsService.cpp2
-rw-r--r--cmds/statsd/src/condition/CombinationConditionTracker.cpp3
-rw-r--r--cmds/statsd/src/condition/CombinationConditionTracker.h2
-rw-r--r--cmds/statsd/src/condition/ConditionTracker.h4
-rw-r--r--cmds/statsd/src/condition/SimpleConditionTracker.cpp23
-rw-r--r--cmds/statsd/src/condition/SimpleConditionTracker.h2
-rw-r--r--cmds/statsd/src/config/ConfigManager.cpp4
-rw-r--r--cmds/statsd/src/config/ConfigManager.h4
-rw-r--r--cmds/statsd/src/external/StatsPullerManagerImpl.cpp4
-rw-r--r--cmds/statsd/src/external/StatsPullerManagerImpl.h4
-rw-r--r--cmds/statsd/src/metrics/CountMetricProducer.cpp2
-rw-r--r--cmds/statsd/src/metrics/CountMetricProducer.h2
-rw-r--r--cmds/statsd/src/metrics/DurationMetricProducer.cpp12
-rw-r--r--cmds/statsd/src/metrics/DurationMetricProducer.h2
-rw-r--r--cmds/statsd/src/metrics/EventMetricProducer.cpp2
-rw-r--r--cmds/statsd/src/metrics/EventMetricProducer.h2
-rw-r--r--cmds/statsd/src/metrics/GaugeMetricProducer.cpp2
-rw-r--r--cmds/statsd/src/metrics/GaugeMetricProducer.h2
-rw-r--r--cmds/statsd/src/metrics/MetricProducer.h2
-rw-r--r--cmds/statsd/src/metrics/ValueMetricProducer.cpp2
-rw-r--r--cmds/statsd/src/metrics/ValueMetricProducer.h2
-rw-r--r--cmds/statsd/src/metrics/duration_helper/DurationTracker.h4
-rw-r--r--cmds/statsd/src/metrics/duration_helper/MaxDurationTracker.h2
-rw-r--r--cmds/statsd/src/metrics/duration_helper/OringDurationTracker.h3
26 files changed, 56 insertions, 43 deletions
diff --git a/cmds/statsd/src/StatsLogProcessor.cpp b/cmds/statsd/src/StatsLogProcessor.cpp
index fcb5107c31fc..01a58d5a78d4 100644
--- a/cmds/statsd/src/StatsLogProcessor.cpp
+++ b/cmds/statsd/src/StatsLogProcessor.cpp
@@ -114,7 +114,7 @@ void StatsLogProcessor::OnConfigUpdated(const ConfigKey& key, const StatsdConfig
}
}
-size_t StatsLogProcessor::GetMetricsSize(const ConfigKey& key) {
+size_t StatsLogProcessor::GetMetricsSize(const ConfigKey& key) const {
auto it = mMetricsManagers.find(key);
if (it == mMetricsManagers.end()) {
ALOGW("Config source %s does not exist", key.ToString().c_str());
diff --git a/cmds/statsd/src/StatsLogProcessor.h b/cmds/statsd/src/StatsLogProcessor.h
index 510dc5145dfe..7db026719d5d 100644
--- a/cmds/statsd/src/StatsLogProcessor.h
+++ b/cmds/statsd/src/StatsLogProcessor.h
@@ -41,8 +41,8 @@ public:
void OnConfigUpdated(const ConfigKey& key, const StatsdConfig& config);
void OnConfigRemoved(const ConfigKey& key);
- size_t GetMetricsSize(const ConfigKey& key);
-
+ size_t GetMetricsSize(const ConfigKey& key) const;
+
void onDumpReport(const ConfigKey& key, vector<uint8_t>* outData);
void onAnomalyAlarmFired(
const uint64_t timestampNs,
diff --git a/cmds/statsd/src/StatsService.cpp b/cmds/statsd/src/StatsService.cpp
index 65b3da1cd258..aaf1868acbf1 100644
--- a/cmds/statsd/src/StatsService.cpp
+++ b/cmds/statsd/src/StatsService.cpp
@@ -667,7 +667,7 @@ void StatsService::OnLogEvent(const LogEvent& event) {
mProcessor->OnLogEvent(event);
}
-Status StatsService::getData(const String16& key, vector <uint8_t>* output) {
+Status StatsService::getData(const String16& key, vector<uint8_t>* output) {
IPCThreadState* ipc = IPCThreadState::self();
ALOGD("StatsService::getData with Pid %i, Uid %i", ipc->getCallingPid(),
ipc->getCallingUid());
diff --git a/cmds/statsd/src/condition/CombinationConditionTracker.cpp b/cmds/statsd/src/condition/CombinationConditionTracker.cpp
index 41f5fcaf8dbc..dd84cf4b4b93 100644
--- a/cmds/statsd/src/condition/CombinationConditionTracker.cpp
+++ b/cmds/statsd/src/condition/CombinationConditionTracker.cpp
@@ -104,7 +104,8 @@ bool CombinationConditionTracker::init(const vector<Condition>& allConditionConf
void CombinationConditionTracker::isConditionMet(
const map<string, HashableDimensionKey>& conditionParameters,
- const vector<sp<ConditionTracker>>& allConditions, vector<ConditionState>& conditionCache) {
+ const vector<sp<ConditionTracker>>& allConditions,
+ vector<ConditionState>& conditionCache) const {
for (const int childIndex : mChildren) {
if (conditionCache[childIndex] == ConditionState::kNotEvaluated) {
allConditions[childIndex]->isConditionMet(conditionParameters, allConditions,
diff --git a/cmds/statsd/src/condition/CombinationConditionTracker.h b/cmds/statsd/src/condition/CombinationConditionTracker.h
index 3d2c6bb82e72..00dc6b7445b4 100644
--- a/cmds/statsd/src/condition/CombinationConditionTracker.h
+++ b/cmds/statsd/src/condition/CombinationConditionTracker.h
@@ -43,7 +43,7 @@ public:
void isConditionMet(const std::map<std::string, HashableDimensionKey>& conditionParameters,
const std::vector<sp<ConditionTracker>>& allConditions,
- std::vector<ConditionState>& conditionCache) override;
+ std::vector<ConditionState>& conditionCache) const override;
private:
LogicalOperation mLogicalOperation;
diff --git a/cmds/statsd/src/condition/ConditionTracker.h b/cmds/statsd/src/condition/ConditionTracker.h
index 0ac7ef38e0aa..b85d8c1e8eca 100644
--- a/cmds/statsd/src/condition/ConditionTracker.h
+++ b/cmds/statsd/src/condition/ConditionTracker.h
@@ -72,7 +72,7 @@ public:
std::vector<bool>& conditionChanged) = 0;
// Return the current condition state.
- virtual ConditionState isConditionMet() {
+ virtual ConditionState isConditionMet() const {
return mNonSlicedConditionState;
};
@@ -85,7 +85,7 @@ public:
virtual void isConditionMet(
const std::map<std::string, HashableDimensionKey>& conditionParameters,
const std::vector<sp<ConditionTracker>>& allConditions,
- std::vector<ConditionState>& conditionCache) = 0;
+ std::vector<ConditionState>& conditionCache) const = 0;
// return the list of LogMatchingTracker index that this ConditionTracker uses.
virtual const std::set<int>& getLogTrackerIndex() const {
diff --git a/cmds/statsd/src/condition/SimpleConditionTracker.cpp b/cmds/statsd/src/condition/SimpleConditionTracker.cpp
index 60060fe60fbd..ea5c64fd2b3a 100644
--- a/cmds/statsd/src/condition/SimpleConditionTracker.cpp
+++ b/cmds/statsd/src/condition/SimpleConditionTracker.cpp
@@ -236,17 +236,19 @@ void SimpleConditionTracker::evaluateCondition(const LogEvent& event,
// if the condition result is sliced. metrics won't directly get value from the
// cache, so just set any value other than kNotEvaluated.
conditionCache[mIndex] = ConditionState::kUnknown;
- } else if (mSlicedConditionState.find(DEFAULT_DIMENSION_KEY) ==
- mSlicedConditionState.end()) {
- // condition not sliced, but we haven't seen the matched start or stop yet. so return
- // initial value.
- conditionCache[mIndex] = mInitialValue;
} else {
- // return the cached condition.
- conditionCache[mIndex] = mSlicedConditionState[DEFAULT_DIMENSION_KEY] > 0
- ? ConditionState::kTrue
- : ConditionState::kFalse;
+ const auto& itr = mSlicedConditionState.find(DEFAULT_DIMENSION_KEY);
+ if (itr == mSlicedConditionState.end()) {
+ // condition not sliced, but we haven't seen the matched start or stop yet. so
+ // return initial value.
+ conditionCache[mIndex] = mInitialValue;
+ } else {
+ // return the cached condition.
+ conditionCache[mIndex] =
+ itr->second > 0 ? ConditionState::kTrue : ConditionState::kFalse;
+ }
}
+
return;
}
@@ -257,7 +259,8 @@ void SimpleConditionTracker::evaluateCondition(const LogEvent& event,
void SimpleConditionTracker::isConditionMet(
const map<string, HashableDimensionKey>& conditionParameters,
- const vector<sp<ConditionTracker>>& allConditions, vector<ConditionState>& conditionCache) {
+ const vector<sp<ConditionTracker>>& allConditions,
+ vector<ConditionState>& conditionCache) const {
const auto pair = conditionParameters.find(mName);
HashableDimensionKey key =
(pair == conditionParameters.end()) ? DEFAULT_DIMENSION_KEY : pair->second;
diff --git a/cmds/statsd/src/condition/SimpleConditionTracker.h b/cmds/statsd/src/condition/SimpleConditionTracker.h
index 2eda0b1af8b0..c287d8f34e8f 100644
--- a/cmds/statsd/src/condition/SimpleConditionTracker.h
+++ b/cmds/statsd/src/condition/SimpleConditionTracker.h
@@ -47,7 +47,7 @@ public:
void isConditionMet(const std::map<std::string, HashableDimensionKey>& conditionParameters,
const std::vector<sp<ConditionTracker>>& allConditions,
- std::vector<ConditionState>& conditionCache) override;
+ std::vector<ConditionState>& conditionCache) const override;
private:
// The index of the LogEventMatcher which defines the start.
diff --git a/cmds/statsd/src/config/ConfigManager.cpp b/cmds/statsd/src/config/ConfigManager.cpp
index 0c9252e2095f..ba59d6844798 100644
--- a/cmds/statsd/src/config/ConfigManager.cpp
+++ b/cmds/statsd/src/config/ConfigManager.cpp
@@ -132,7 +132,7 @@ void ConfigManager::RemoveConfigs(int uid) {
}
}
-vector<ConfigKey> ConfigManager::GetAllConfigKeys() {
+vector<ConfigKey> ConfigManager::GetAllConfigKeys() const {
vector<ConfigKey> ret;
for (auto it = mConfigs.cbegin(); it != mConfigs.cend(); ++it) {
ret.push_back(it->first);
@@ -140,7 +140,7 @@ vector<ConfigKey> ConfigManager::GetAllConfigKeys() {
return ret;
}
-const pair<string, string> ConfigManager::GetConfigReceiver(const ConfigKey& key) {
+const pair<string, string> ConfigManager::GetConfigReceiver(const ConfigKey& key) const {
auto it = mConfigReceivers.find(key);
if (it == mConfigReceivers.end()) {
return pair<string,string>();
diff --git a/cmds/statsd/src/config/ConfigManager.h b/cmds/statsd/src/config/ConfigManager.h
index 01d7fb969230..3c0c5996864d 100644
--- a/cmds/statsd/src/config/ConfigManager.h
+++ b/cmds/statsd/src/config/ConfigManager.h
@@ -70,12 +70,12 @@ public:
/**
* Returns the package name and class name representing the broadcast receiver for this config.
*/
- const pair<string, string> GetConfigReceiver(const ConfigKey& key);
+ const pair<string, string> GetConfigReceiver(const ConfigKey& key) const;
/**
* Returns all config keys registered.
*/
- vector<ConfigKey> GetAllConfigKeys();
+ vector<ConfigKey> GetAllConfigKeys() const;
/**
* Erase any broadcast receiver associated with this config key.
diff --git a/cmds/statsd/src/external/StatsPullerManagerImpl.cpp b/cmds/statsd/src/external/StatsPullerManagerImpl.cpp
index 07d0b3e2aac5..3ffcd77bea44 100644
--- a/cmds/statsd/src/external/StatsPullerManagerImpl.cpp
+++ b/cmds/statsd/src/external/StatsPullerManagerImpl.cpp
@@ -88,11 +88,11 @@ StatsPullerManagerImpl& StatsPullerManagerImpl::GetInstance() {
return instance;
}
-bool StatsPullerManagerImpl::PullerForMatcherExists(int tagId) {
+bool StatsPullerManagerImpl::PullerForMatcherExists(int tagId) const {
return mPullers.find(tagId) != mPullers.end();
}
-long StatsPullerManagerImpl::get_pull_start_time_ms() {
+long StatsPullerManagerImpl::get_pull_start_time_ms() const {
// TODO: limit and align pull intervals to 10min boundaries if this turns out to be a problem
return time(nullptr) * 1000;
}
diff --git a/cmds/statsd/src/external/StatsPullerManagerImpl.h b/cmds/statsd/src/external/StatsPullerManagerImpl.h
index 0b9f21e3217c..306cc32c5f16 100644
--- a/cmds/statsd/src/external/StatsPullerManagerImpl.h
+++ b/cmds/statsd/src/external/StatsPullerManagerImpl.h
@@ -41,7 +41,7 @@ public:
void UnRegisterReceiver(int tagId, wp<PullDataReceiver> receiver);
// Verify if we know how to pull for this matcher
- bool PullerForMatcherExists(int tagId);
+ bool PullerForMatcherExists(int tagId) const;
void OnAlarmFired();
@@ -77,7 +77,7 @@ private:
// request time.
const long mPullStartTimeMs;
- long get_pull_start_time_ms();
+ long get_pull_start_time_ms() const;
LogEvent parse_pulled_data(String16 data);
};
diff --git a/cmds/statsd/src/metrics/CountMetricProducer.cpp b/cmds/statsd/src/metrics/CountMetricProducer.cpp
index a5ce38915574..149b9c16fd88 100644
--- a/cmds/statsd/src/metrics/CountMetricProducer.cpp
+++ b/cmds/statsd/src/metrics/CountMetricProducer.cpp
@@ -247,7 +247,7 @@ void CountMetricProducer::flushIfNeeded(const uint64_t eventTimeNs) {
// Rough estimate of CountMetricProducer buffer stored. This number will be
// greater than actual data size as it contains each dimension of
// CountMetricData is duplicated.
-size_t CountMetricProducer::byteSize() {
+size_t CountMetricProducer::byteSize() const {
size_t totalSize = 0;
for (const auto& pair : mPastBuckets) {
totalSize += pair.second.size() * kBucketSize;
diff --git a/cmds/statsd/src/metrics/CountMetricProducer.h b/cmds/statsd/src/metrics/CountMetricProducer.h
index b3f8ee37379e..293e5b971fa5 100644
--- a/cmds/statsd/src/metrics/CountMetricProducer.h
+++ b/cmds/statsd/src/metrics/CountMetricProducer.h
@@ -58,7 +58,7 @@ public:
void onSlicedConditionMayChange(const uint64_t eventTime) override;
- size_t byteSize() override;
+ size_t byteSize() const override;
// TODO: Implement this later.
virtual void notifyAppUpgrade(const string& apk, const int uid, const int version) override{};
diff --git a/cmds/statsd/src/metrics/DurationMetricProducer.cpp b/cmds/statsd/src/metrics/DurationMetricProducer.cpp
index a32e0cb8b274..0ee7dcdf3c2e 100644
--- a/cmds/statsd/src/metrics/DurationMetricProducer.cpp
+++ b/cmds/statsd/src/metrics/DurationMetricProducer.cpp
@@ -264,12 +264,12 @@ void DurationMetricProducer::onMatchedLogEventInternal(
}
}
-size_t DurationMetricProducer::byteSize() {
- size_t totalSize = 0;
- for (const auto& pair : mPastBuckets) {
- totalSize += pair.second.size() * kBucketSize;
- }
- return totalSize;
+size_t DurationMetricProducer::byteSize() const {
+ size_t totalSize = 0;
+ for (const auto& pair : mPastBuckets) {
+ totalSize += pair.second.size() * kBucketSize;
+ }
+ return totalSize;
}
} // namespace statsd
diff --git a/cmds/statsd/src/metrics/DurationMetricProducer.h b/cmds/statsd/src/metrics/DurationMetricProducer.h
index 4c8dbcb83a6b..ebd5e8d36412 100644
--- a/cmds/statsd/src/metrics/DurationMetricProducer.h
+++ b/cmds/statsd/src/metrics/DurationMetricProducer.h
@@ -55,7 +55,7 @@ public:
void onSlicedConditionMayChange(const uint64_t eventTime) override;
- size_t byteSize() override;
+ size_t byteSize() const override;
// TODO: Implement this later.
virtual void notifyAppUpgrade(const string& apk, const int uid, const int version) override{};
diff --git a/cmds/statsd/src/metrics/EventMetricProducer.cpp b/cmds/statsd/src/metrics/EventMetricProducer.cpp
index 9a94a0efa850..567b4c77bf7b 100644
--- a/cmds/statsd/src/metrics/EventMetricProducer.cpp
+++ b/cmds/statsd/src/metrics/EventMetricProducer.cpp
@@ -122,7 +122,7 @@ void EventMetricProducer::onMatchedLogEventInternal(
mProto->end(wrapperToken);
}
-size_t EventMetricProducer::byteSize() {
+size_t EventMetricProducer::byteSize() const {
return mProto->bytesWritten();
}
diff --git a/cmds/statsd/src/metrics/EventMetricProducer.h b/cmds/statsd/src/metrics/EventMetricProducer.h
index 0c453cdac99b..5afcebd29e58 100644
--- a/cmds/statsd/src/metrics/EventMetricProducer.h
+++ b/cmds/statsd/src/metrics/EventMetricProducer.h
@@ -55,7 +55,7 @@ public:
void onSlicedConditionMayChange(const uint64_t eventTime) override;
- size_t byteSize() override;
+ size_t byteSize() const override;
// TODO: Implement this later.
virtual void notifyAppUpgrade(const string& apk, const int uid, const int version) override{};
diff --git a/cmds/statsd/src/metrics/GaugeMetricProducer.cpp b/cmds/statsd/src/metrics/GaugeMetricProducer.cpp
index d7b72965ae1e..be030d856aee 100644
--- a/cmds/statsd/src/metrics/GaugeMetricProducer.cpp
+++ b/cmds/statsd/src/metrics/GaugeMetricProducer.cpp
@@ -295,7 +295,7 @@ void GaugeMetricProducer::flushIfNeeded(const uint64_t eventTimeNs) {
(long long)mCurrentBucketStartTimeNs);
}
-size_t GaugeMetricProducer::byteSize() {
+size_t GaugeMetricProducer::byteSize() const {
size_t totalSize = 0;
for (const auto& pair : mPastBuckets) {
totalSize += pair.second.size() * kBucketSize;
diff --git a/cmds/statsd/src/metrics/GaugeMetricProducer.h b/cmds/statsd/src/metrics/GaugeMetricProducer.h
index 930afb21543f..4b7654b4ca6b 100644
--- a/cmds/statsd/src/metrics/GaugeMetricProducer.h
+++ b/cmds/statsd/src/metrics/GaugeMetricProducer.h
@@ -65,7 +65,7 @@ public:
// TODO: Pass a timestamp as a parameter in onDumpReport.
std::unique_ptr<std::vector<uint8_t>> onDumpReport() override;
- size_t byteSize() override;
+ size_t byteSize() const override;
// TODO: Implement this later.
virtual void notifyAppUpgrade(const string& apk, const int uid, const int version) override{};
diff --git a/cmds/statsd/src/metrics/MetricProducer.h b/cmds/statsd/src/metrics/MetricProducer.h
index 0f9374429930..ddccf9a1970b 100644
--- a/cmds/statsd/src/metrics/MetricProducer.h
+++ b/cmds/statsd/src/metrics/MetricProducer.h
@@ -72,7 +72,7 @@ public:
// Returns the memory in bytes currently used to store this metric's data. Does not change
// state.
- virtual size_t byteSize() = 0;
+ virtual size_t byteSize() const = 0;
void addAnomalyTracker(sp<AnomalyTracker> tracker) {
mAnomalyTrackers.push_back(tracker);
diff --git a/cmds/statsd/src/metrics/ValueMetricProducer.cpp b/cmds/statsd/src/metrics/ValueMetricProducer.cpp
index 0dbdd2981307..cc02c69d4405 100644
--- a/cmds/statsd/src/metrics/ValueMetricProducer.cpp
+++ b/cmds/statsd/src/metrics/ValueMetricProducer.cpp
@@ -345,7 +345,7 @@ void ValueMetricProducer::flushIfNeeded(const uint64_t eventTimeNs) {
(long long)mCurrentBucketStartTimeNs);
}
-size_t ValueMetricProducer::byteSize() {
+size_t ValueMetricProducer::byteSize() const {
size_t totalSize = 0;
for (const auto& pair : mPastBuckets) {
totalSize += pair.second.size() * kBucketSize;
diff --git a/cmds/statsd/src/metrics/ValueMetricProducer.h b/cmds/statsd/src/metrics/ValueMetricProducer.h
index 2b0b0ada2a8f..24c76f26dcaa 100644
--- a/cmds/statsd/src/metrics/ValueMetricProducer.h
+++ b/cmds/statsd/src/metrics/ValueMetricProducer.h
@@ -56,7 +56,7 @@ public:
void onDataPulled(const std::vector<std::shared_ptr<LogEvent>>& data) override;
- size_t byteSize() override;
+ size_t byteSize() const override;
// TODO: Implement this later.
virtual void notifyAppUpgrade(const string& apk, const int uid, const int version) override{};
diff --git a/cmds/statsd/src/metrics/duration_helper/DurationTracker.h b/cmds/statsd/src/metrics/duration_helper/DurationTracker.h
index c91ea0f845bd..7ce7f02e06bb 100644
--- a/cmds/statsd/src/metrics/duration_helper/DurationTracker.h
+++ b/cmds/statsd/src/metrics/duration_helper/DurationTracker.h
@@ -73,14 +73,18 @@ public:
mDuration(0),
mCurrentBucketNum(0),
mAnomalyTrackers(anomalyTrackers){};
+
virtual ~DurationTracker(){};
+
virtual void noteStart(const HashableDimensionKey& key, bool condition,
const uint64_t eventTime, const ConditionKey& conditionKey) = 0;
virtual void noteStop(const HashableDimensionKey& key, const uint64_t eventTime,
const bool stopAll) = 0;
virtual void noteStopAll(const uint64_t eventTime) = 0;
+
virtual void onSlicedConditionMayChange(const uint64_t timestamp) = 0;
virtual void onConditionChanged(bool condition, const uint64_t timestamp) = 0;
+
// Flush stale buckets if needed, and return true if the tracker has no on-going duration
// events, so that the owner can safely remove the tracker.
virtual bool flushIfNeeded(uint64_t timestampNs) = 0;
diff --git a/cmds/statsd/src/metrics/duration_helper/MaxDurationTracker.h b/cmds/statsd/src/metrics/duration_helper/MaxDurationTracker.h
index ca1021041e34..0f79ffed4ec2 100644
--- a/cmds/statsd/src/metrics/duration_helper/MaxDurationTracker.h
+++ b/cmds/statsd/src/metrics/duration_helper/MaxDurationTracker.h
@@ -38,7 +38,9 @@ public:
void noteStop(const HashableDimensionKey& key, const uint64_t eventTime,
const bool stopAll) override;
void noteStopAll(const uint64_t eventTime) override;
+
bool flushIfNeeded(uint64_t timestampNs) override;
+
void onSlicedConditionMayChange(const uint64_t timestamp) override;
void onConditionChanged(bool condition, const uint64_t timestamp) override;
diff --git a/cmds/statsd/src/metrics/duration_helper/OringDurationTracker.h b/cmds/statsd/src/metrics/duration_helper/OringDurationTracker.h
index 6f921139b76f..ef32fdb510d1 100644
--- a/cmds/statsd/src/metrics/duration_helper/OringDurationTracker.h
+++ b/cmds/statsd/src/metrics/duration_helper/OringDurationTracker.h
@@ -32,13 +32,16 @@ public:
uint64_t bucketSizeNs,
const std::vector<sp<AnomalyTracker>>& anomalyTrackers,
std::vector<DurationBucket>& bucket);
+
void noteStart(const HashableDimensionKey& key, bool condition, const uint64_t eventTime,
const ConditionKey& conditionKey) override;
void noteStop(const HashableDimensionKey& key, const uint64_t eventTime,
const bool stopAll) override;
void noteStopAll(const uint64_t eventTime) override;
+
void onSlicedConditionMayChange(const uint64_t timestamp) override;
void onConditionChanged(bool condition, const uint64_t timestamp) override;
+
bool flushIfNeeded(uint64_t timestampNs) override;
int64_t predictAnomalyTimestampNs(const AnomalyTracker& anomalyTracker,