addSessionMetric method
Implementation
bool addSessionMetric(Map<String, dynamic> metric) {
final metricName = metric['metric_name']?.toString() ?? "";
if (metricName.isEmpty) {
return false;
}
final unit = metric['metric_unit']?.toString() ?? "";
final attributes = _stringMap(metric['metric_attributes']);
final key = _metricKeyFromMap(metricName, attributes);
final kind = metric['kind']?.toString() ?? "sum";
if (kind == "histogram") {
final entry = _entries.putIfAbsent(
key,
() => _LiveMetricEntry.histogram(key: key, unit: unit),
);
entry.addHistogramFields(
count: _parseMetricInt(metric['count']) ?? 0,
sum: _parseMetricNum(metric['sum']),
min: _parseMetricNum(metric['min']),
max: _parseMetricNum(metric['max']),
bucketCounts: (metric['bucket_counts'] as List<dynamic>? ?? [])
.map((value) => _parseMetricInt(value) ?? 0)
.toList(),
explicitBounds: (metric['explicit_bounds'] as List<dynamic>? ?? [])
.map((value) => _parseMetricNum(value) ?? 0)
.toList(),
);
return true;
}
final value = _parseMetricNum(metric['value']);
if (value == null) {
return false;
}
final entry = _entries.putIfAbsent(
key,
() => _LiveMetricEntry.sum(key: key, unit: unit),
);
entry.addNumber(value);
return true;
}