getStats method

Map<String, dynamic> getStats()

Get cache statistics

Implementation

Map<String, dynamic> getStats() {
  final now = DateTime.now();

  int onlineCount = 0;
  int offlineCount = 0;
  int unknownCount = 0;

  for (final status in _cache.values) {
    final age = now.difference(status.checkedAt);
    if (age <= _cacheTtl) {
      switch (status.state) {
        case PresenceState.online:
        case PresenceState.probablyOnline:
          onlineCount++;
          break;
        case PresenceState.offline:
          offlineCount++;
          break;
        case PresenceState.unknown:
          unknownCount++;
          break;
      }
    }
  }

  return {
    'totalCached': _cache.length,
    'onlineCount': onlineCount,
    'offlineCount': offlineCount,
    'unknownCount': unknownCount,
    'cacheTtlSeconds': _cacheTtl.inSeconds,
  };
}