getStatistics method
Get subscription statistics.
Implementation
SubscriptionStatistics getStatistics() {
final subscriptions = _activeSubscriptions.values.toList();
if (subscriptions.isEmpty) {
return SubscriptionStatistics(
totalSubscriptions: 0,
totalEventCount: 0,
averageEventsPerSubscription: 0,
oldestSubscriptionAgeSeconds: 0,
newestSubscriptionAgeSeconds: 0,
);
}
final now = DateTime.now();
final totalEvents =
subscriptions.fold<int>(0, (sum, sub) => sum + sub.eventCount);
final ages = subscriptions
.map((sub) => now.difference(sub.createdAt).inSeconds)
.toList();
return SubscriptionStatistics(
totalSubscriptions: subscriptions.length,
totalEventCount: totalEvents,
averageEventsPerSubscription: totalEvents / subscriptions.length,
oldestSubscriptionAgeSeconds: ages.reduce((a, b) => a > b ? a : b),
newestSubscriptionAgeSeconds: ages.reduce((a, b) => a < b ? a : b),
);
}