addSessionMetric method

bool addSessionMetric(
  1. Map<String, dynamic> metric
)

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;
}