diff options
Diffstat (limited to 'cmds/statsd/src/condition/condition_util.cpp')
-rw-r--r-- | cmds/statsd/src/condition/condition_util.cpp | 104 |
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 |