completeCallTracking method

void completeCallTracking(
  1. String callId
)

Completes call tracking and emits the final metrics. Call this when the call reaches ACTIVE state.

Implementation

void completeCallTracking(String callId) {
  final state = _callTrackers[callId];
  if (state == null) return;

  markCallMilestone(callId, milestoneCallActive);

  final milestones = Map<String, int>.unmodifiable(state.milestones);
  final totalTime =
      DateTime.now().millisecondsSinceEpoch - state.startTime;

  // Calculate derived metrics
  final iceGatheringLatency = _calculateIceGatheringLatency(milestones);
  final signalingLatency =
      _calculateSignalingLatency(milestones, state.isOutbound);
  final mediaEstablishmentLatency =
      _calculateMediaEstablishmentLatency(milestones);
  final timeToFirstRtp = _calculateTimeToFirstRtp(milestones);

  final metrics = LatencyMetrics(
    callId: callId,
    isOutbound: state.isOutbound,
    callSetupLatencyMs: totalTime,
    timeToFirstRtpMs: timeToFirstRtp,
    iceGatheringLatencyMs: iceGatheringLatency,
    signalingLatencyMs: signalingLatency,
    mediaEstablishmentLatencyMs: mediaEstablishmentLatency,
    milestones: milestones,
  );

  _emitMetrics(metrics);
  GlobalLogger().i('Call $callId completed in ${totalTime}ms');
  GlobalLogger().d(metrics.toString());

  // Clean up
  _callTrackers.remove(callId);
}