StompTransactionStats.fromManager constructor

StompTransactionStats.fromManager(
  1. StompTransactionManager manager
)

Creates statistics from a transaction manager

Implementation

factory StompTransactionStats.fromManager(StompTransactionManager manager) {
  final transactions = manager._transactions.values.toList();
  final active = transactions.where((t) => t.isActive).length;
  final committed = transactions.where((t) => t.isCommitted).length;
  final aborted = transactions.where((t) => t.isAborted).length;

  Duration totalDuration = Duration.zero;
  Duration longestDuration = Duration.zero;

  for (final transaction in transactions) {
    final duration = transaction.duration;
    totalDuration += duration;
    if (duration > longestDuration) {
      longestDuration = duration;
    }
  }

  final averageDuration = transactions.isNotEmpty
      ? Duration(microseconds: totalDuration.inMicroseconds ~/ transactions.length)
      : Duration.zero;

  return StompTransactionStats(
    totalTransactions: transactions.length,
    activeTransactions: active,
    committedTransactions: committed,
    abortedTransactions: aborted,
    averageTransactionDuration: averageDuration,
    longestTransactionDuration: longestDuration,
  );
}