startStats method

Future<bool> startStats(
  1. String callId,
  2. String peerId, {
  3. CallQualityCallback? onCallQualityChange,
  4. String? direction,
  5. String? destinationNumber,
  6. String? callerNumber,
})

Implementation

Future<bool> startStats(
  String callId,
  String peerId, {
  CallQualityCallback? onCallQualityChange,
  String? direction,
  String? destinationNumber,
  String? callerNumber,
}) async {
  if (peerConnection == null) {
    GlobalLogger().d('Peer connection null');
    return false;
  }

  // Create log collector
  _callReportLogCollector = CallReportLogCollector(
    maxEntries: _callReportMaxLogEntries,
    logLevel: _callReportLogLevel,
  );

  // Log call started event
  _callReportLogCollector?.logCallStarted(
    callId: callId,
    direction: direction ?? 'unknown',
    destinationNumber: destinationNumber,
    callerNumber: callerNumber,
  );

  // Always start call report collector (for post-call reporting)
  _callReportCollector = CallReportCollector(
    options: CallReportOptions(
      intervalMs: _callReportInterval,
    ),
    logCollector: _callReportLogCollector,
  );
  _callReportCollector?.start(peerConnection!);
  GlobalLogger().d('Peer :: CallReportCollector started for $callId');

  // Only start WebRTC stats reporter if debug mode is enabled
  if (_debug == false) {
    GlobalLogger().d(
      'Peer :: Stats manager will not start. Debug mode not enabled on config',
    );
    return true; // Return true because call report collector started
  }

  _statsManager = WebRTCStatsReporter(
    _socket,
    peerConnection!,
    callId,
    peerId,
    _txClient.isDebug(),
    onCallQualityChange: onCallQualityChange,
  );
  await _statsManager?.startStatsReporting();

  return true;
}