in aws/metrics/metrics_constants.cc [22:82]
bool filter(const std::vector<std::pair<std::string, std::string>>& dimensions,
Level max_level,
Granularity max_granularity) {
#define LEVEL(X, Y) (std::string(Names::X), Level::Y)
static std::unordered_map<std::string, Level> level_map =
boost::assign::map_list_of
LEVEL( Test, Detailed )
LEVEL( UserRecordsReceived, Detailed )
LEVEL( UserRecordsPending, Detailed )
LEVEL( UserRecordsPut, Summary )
LEVEL( UserRecordsDataPut, Detailed )
LEVEL( KinesisRecordsPut, Summary )
LEVEL( KinesisRecordsDataPut, Detailed )
LEVEL( ErrorsByCode, Summary )
LEVEL( AllErrors, Summary )
LEVEL( RetriesPerRecord, Detailed )
LEVEL( UserRecordExpired, Summary )
LEVEL( BufferingTime, Summary )
LEVEL( RequestTime, Detailed )
LEVEL( UserRecordsPerKinesisRecord, Detailed )
LEVEL( KinesisRecordsPerPutRecordsRequest, Detailed )
LEVEL( UserRecordsPerPutRecordsRequest, Detailed );
#undef LEVEL
if (max_level == Level::None) {
return false;
}
assert(!dimensions.empty());
assert(dimensions.front().first == "MetricName");
auto level = Level::Detailed;
auto it = level_map.find(dimensions.front().second);
if (it != level_map.end()) {
level = it->second;
} else {
LOG(warning) << "Unknown metric \"" << dimensions.front().second
<< "\", did you forget to add it to "
<< "aws::metrics::constants::filter()?";
}
auto granularity = Granularity::Global;
for (auto& p : dimensions) {
if (p.first == "StreamName") {
granularity = Granularity::Stream;
} else if (p.first == "ShardId") {
granularity = Granularity::Shard;
}
}
if (level > max_level || granularity > max_granularity) {
return false;
}
return true;
}