summaryrefslogtreecommitdiff
path: root/cmds/statsd/src/condition/condition_util.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cmds/statsd/src/condition/condition_util.cpp')
-rw-r--r--cmds/statsd/src/condition/condition_util.cpp104
1 files changed, 0 insertions, 104 deletions
diff --git a/cmds/statsd/src/condition/condition_util.cpp b/cmds/statsd/src/condition/condition_util.cpp
index 0ab33cfbaea1..691356b5edc6 100644
--- a/cmds/statsd/src/condition/condition_util.cpp
+++ b/cmds/statsd/src/condition/condition_util.cpp
@@ -27,7 +27,6 @@
#include "ConditionTracker.h"
#include "frameworks/base/cmds/statsd/src/statsd_config.pb.h"
#include "stats_util.h"
-#include "dimension.h"
namespace android {
namespace os {
@@ -97,109 +96,6 @@ ConditionState evaluateCombinationCondition(const std::vector<int>& children,
ConditionState operator|(ConditionState l, ConditionState r) {
return l >= r ? l : r;
}
-
-void OrConditionState(const std::vector<ConditionState>& ref, vector<ConditionState> * ored) {
- if (ref.size() != ored->size()) {
- return;
- }
- for (size_t i = 0; i < ored->size(); ++i) {
- ored->at(i) = ored->at(i) | ref.at(i);
- }
-}
-
-void OrBooleanVector(const std::vector<bool>& ref, vector<bool> * ored) {
- if (ref.size() != ored->size()) {
- return;
- }
- for (size_t i = 0; i < ored->size(); ++i) {
- ored->at(i) = ored->at(i) | ref.at(i);
- }
-}
-
-void getFieldsFromFieldMatcher(const FieldMatcher& matcher, Field* rootField, Field* leafField,
- std::vector<Field> *allFields) {
- if (matcher.has_position()) {
- leafField->set_position_index(0);
- }
- if (matcher.child_size() == 0) {
- allFields->push_back(*rootField);
- return;
- }
- for (int i = 0; i < matcher.child_size(); ++i) {
- Field* newLeafField = leafField->add_child();
- newLeafField->set_field(matcher.child(i).field());
- getFieldsFromFieldMatcher(matcher.child(i), rootField, newLeafField, allFields);
- }
-}
-
-void getFieldsFromFieldMatcher(const FieldMatcher& matcher, std::vector<Field> *allFields) {
- if (!matcher.has_field()) {
- return;
- }
- Field rootField;
- rootField.set_field(matcher.field());
- getFieldsFromFieldMatcher(matcher, &rootField, &rootField, allFields);
-}
-
-void flattenValueLeaves(const DimensionsValue& value,
- std::vector<const DimensionsValue*> *allLaves) {
- switch (value.value_case()) {
- case DimensionsValue::ValueCase::kValueStr:
- case DimensionsValue::ValueCase::kValueInt:
- case DimensionsValue::ValueCase::kValueLong:
- case DimensionsValue::ValueCase::kValueBool:
- case DimensionsValue::ValueCase::kValueFloat:
- case DimensionsValue::ValueCase::VALUE_NOT_SET:
- allLaves->push_back(&value);
- break;
- case DimensionsValue::ValueCase::kValueTuple:
- for (int i = 0; i < value.value_tuple().dimensions_value_size(); ++i) {
- flattenValueLeaves(value.value_tuple().dimensions_value(i), allLaves);
- }
- break;
- }
-}
-
-void getDimensionKeysForCondition(
- const LogEvent& event, const MetricConditionLink& link,
- std::vector<HashableDimensionKey> *hashableDimensionKeys) {
- std::vector<Field> whatFields;
- getFieldsFromFieldMatcher(link.fields_in_what(), &whatFields);
- std::vector<Field> conditionFields;
- getFieldsFromFieldMatcher(link.fields_in_condition(), &conditionFields);
-
- // TODO(yanglu): here we could simplify the logic to get the leaf value node in what and
- // directly construct the full condition value tree.
- std::vector<DimensionsValue> whatValues;
- getDimensionKeys(event, link.fields_in_what(), &whatValues);
-
- for (size_t i = 0; i < whatValues.size(); ++i) {
- std::vector<const DimensionsValue*> whatLeaves;
- flattenValueLeaves(whatValues[i], &whatLeaves);
- if (whatLeaves.size() != whatFields.size() ||
- whatLeaves.size() != conditionFields.size()) {
- ALOGE("Dimensions between what and condition not equal.");
- return;
- }
- FieldValueMap conditionValueMap;
- for (size_t j = 0; j < whatLeaves.size(); ++j) {
- DimensionsValue* conditionValue = &conditionValueMap[conditionFields[j]];
- *conditionValue = *whatLeaves[i];
- if (!setFieldInLeafValueProto(conditionFields[j], conditionValue)) {
- ALOGE("Not able to reset the field for condition leaf value.");
- return;
- }
- }
- std::vector<DimensionsValue> conditionValueTrees;
- findDimensionsValues(conditionValueMap, link.fields_in_condition(), &conditionValueTrees);
- if (conditionValueTrees.size() != 1) {
- ALOGE("Not able to find unambiguous field value in condition atom.");
- continue;
- }
- hashableDimensionKeys->push_back(HashableDimensionKey(conditionValueTrees[0]));
- }
-}
-
} // namespace statsd
} // namespace os
} // namespace android