Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 15 additions & 14 deletions packages/stream_video/lib/src/call/call.dart
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ import 'session/dynascale_manager.dart';
import 'state/call_state_notifier.dart';
import 'stats/sfu_stats_reporter.dart';
import 'stats/stats_reporter.dart';
import 'stats/trace_tag.dart';

typedef OnCallPermissionRequest =
void Function(
Expand Down Expand Up @@ -913,7 +914,7 @@ class Call {
}
}

_session?.trace('call.accept', null);
_session?.trace(TraceTag.callAccept, null);

// Optimistically mark the call as accepted
_stateManager.lifecycleCallAccepted();
Expand All @@ -932,7 +933,7 @@ class Call {
final state = this.state.value;
_logger.i(() => '[reject] reason: $reason');

_session?.trace('call.reject', reason?.value);
_session?.trace(TraceTag.callReject, reason?.value);
final result = await _coordinatorClient.rejectCall(
cid: state.callCid,
reason: reason?.value,
Expand Down Expand Up @@ -1148,7 +1149,7 @@ class Call {
'[join] $sfuMigrateReason for SFU: $sfuName, migrating...',
);

_session?.trace('call_join_migrate', {
_session?.trace(TraceTag.callJoinMigrate, {
'migrateFrom': sfuName,
'reason': sfuMigrateReason,
});
Expand Down Expand Up @@ -1319,7 +1320,7 @@ class Call {
_suspendedTrackStates[trackId] = SuspendedTrackState.neverStarted;
},
onReconnectionNeeded: (pc, strategy) {
_session?.trace('pc_reconnection_needed', {
_session?.trace(TraceTag.pcReconnectionNeeded, {
'peerConnectionId': pc.type.name,
'reconnectionStrategy': strategy.name,
});
Expand Down Expand Up @@ -1835,7 +1836,7 @@ class Call {
)) {
_logger.w(() => '[onSfuEvent] socket disconnected');

_session?.trace('sfu_socket_disconnected', {
_session?.trace(TraceTag.sfuSocketDisconnected, {
'closeCode': sfuEvent.reason.closeCode,
'closeReason': sfuEvent.reason.closeReason,
});
Expand All @@ -1852,7 +1853,7 @@ class Call {
}
} else if (sfuEvent is SfuSocketFailed) {
_logger.w(() => '[onSfuEvent] socket failed');
_session?.trace('sfu_socket_failed', {
_session?.trace(TraceTag.sfuSocketFailed, {
'error': sfuEvent.error.message,
});
await _reconnect(
Expand All @@ -1861,7 +1862,7 @@ class Call {
);
} else if (sfuEvent is SfuGoAwayEvent) {
_logger.w(() => '[onSfuEvent] go away, migrating sfu');
_session?.trace('sfu_go_away', {
_session?.trace(TraceTag.sfuSocketGoAway, {
'reason': sfuEvent.goAwayReason.name,
});
await _reconnect(
Expand All @@ -1871,7 +1872,7 @@ class Call {
}
// error event
else if (sfuEvent is SfuErrorEvent) {
_session?.trace('sfu_error', {
_session?.trace(TraceTag.sfuSocketError, {
'code': sfuEvent.error.code.name,
'error': sfuEvent.error.message,
'strategy': sfuEvent.error.reconnectStrategy.name,
Expand Down Expand Up @@ -1973,7 +1974,7 @@ class Call {
return;
}

_session?.trace('callReconnect', {
_session?.trace(TraceTag.callReconnect, {
'strategy': strategy.name,
'reason': reconnectReason,
});
Expand All @@ -1994,7 +1995,7 @@ class Call {

if (networkStatus == InternetStatus.disconnected) {
_logger.w(() => '[reconnect] reconnection timeout');
_session?.trace('callReconnectFailed', {
_session?.trace(TraceTag.callReconnectFailed, {
'strategy': strategy.name,
'error': 'reconnection timeout',
});
Expand All @@ -2006,7 +2007,7 @@ class Call {
_logger.w(
() => '[reconnect] rejected (call was left during network wait)',
);
_session?.trace('callReconnectFailed', {
_session?.trace(TraceTag.callReconnectFailed, {
'strategy': strategy.name,
'error': 'call was left',
});
Expand Down Expand Up @@ -2043,7 +2044,7 @@ class Call {
};

if (reconnectResult.isSuccess) {
_session?.trace('callReconnectSuccess', {
_session?.trace(TraceTag.callReconnectSuccess, {
'strategy': strategy.name,
});
} else {
Expand Down Expand Up @@ -2089,7 +2090,7 @@ class Call {
_logger.w(() => '[reconnect] unrecoverable error');
_stateManager.lifecycleCallReconnectingFailed();

_session?.trace('callReconnectFailed', {
_session?.trace(TraceTag.callReconnectFailed, {
'strategy': strategy.name,
'error': error.toString(),
});
Expand Down Expand Up @@ -2247,7 +2248,7 @@ class Call {
'[_awaitNetworkAvailable] network dropped during '
'${stabilityWindow.inSeconds}s stability window, retrying',
);
_session?.trace('awaitNetwork.unstable', {
_session?.trace(TraceTag.awaitNetworkUnstable, {
'stabilityWindowSeconds': stabilityWindow.inSeconds,
});
} on TimeoutException {
Expand Down
36 changes: 19 additions & 17 deletions packages/stream_video/lib/src/call/session/call_session.dart
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ import '../../webrtc/sdp/editor/sdp_editor.dart';
import '../../ws/ws.dart';
import '../state/call_state_notifier.dart';
import '../stats/stats_reporter.dart';
import '../stats/trace_tag.dart';
import '../stats/tracer.dart';
import 'call_session_config.dart';

Expand Down Expand Up @@ -158,7 +159,7 @@ class CallSession extends Disposable {

void _observeNetworkStatus() {
_networkStatusSubscription = networkMonitor.onStatusChange.listen((status) {
_tracer.trace('network.changed', status.name);
_tracer.trace(TraceTag.networkChanged, status.name);
});
}

Expand Down Expand Up @@ -301,7 +302,7 @@ class CallSession extends Disposable {
unifiedSessionId: unifiedSessionId,
);

_tracer.trace('joinRequest', joinRequest.toJson());
_tracer.trace(TraceTag.joinRequest, joinRequest.toJson());

sfuWS.send(
sfu_events.SfuRequest(
Expand Down Expand Up @@ -433,7 +434,7 @@ class CallSession extends Disposable {
details: wsJoinDetails,
retryCount: clientEventRetryCount,
);
_tracer.trace('joinRequestTimeout', message);
_tracer.trace(TraceTag.joinRequestTimeout, message);
_logger.e(() => '[start] failed: $e');
return Result.failure(VideoErrors.compose(e, stk));
} catch (e, stk) {
Expand Down Expand Up @@ -476,7 +477,7 @@ class CallSession extends Disposable {
try {
_logger.d(() => '[fastReconnect] no args');

_tracer.trace('fastReconnect', reconnectDetails.toJson());
_tracer.trace(TraceTag.fastReconnect, reconnectDetails.toJson());

final genericSdpFactory = await rtcManagerFactory.pcFactory
.ensureNativeFactory();
Expand Down Expand Up @@ -564,18 +565,18 @@ class CallSession extends Disposable {
}

if (result.isSuccess) {
_tracer.trace('fastReconnect.success', null);
_tracer.trace(TraceTag.fastReconnectSuccess, null);
} else {
_tracer.trace(
'fastReconnect.failure',
TraceTag.fastReconnectFailure,
result.getErrorOrNull()?.toString(),
);
}

return result;
} catch (e, stk) {
_logger.e(() => '[fastReconnect] failed: $e');
_tracer.trace('fastReconnect.failure', e.toString());
_tracer.trace(TraceTag.fastReconnectFailure, e.toString());
return Result.failure(VideoErrors.compose(e, stk));
} finally {
rtcManager?.subscriber.setReconnecting(false);
Expand Down Expand Up @@ -608,7 +609,7 @@ class CallSession extends Disposable {
'state after ${_publisherConnectionCheckDelay.inSeconds}s '
'— triggering reconnection',
);
_tracer.trace('publisherConnectionCheck.stalled', {
_tracer.trace(TraceTag.publisherConnectionCheckStalled, {
'iceState': iceState.toString(),
'timeoutSeconds': _publisherConnectionCheckDelay.inSeconds,
});
Expand All @@ -627,7 +628,7 @@ class CallSession extends Disposable {
void leave({String? reason}) {
_logger.d(() => '[leave] reason: $reason');
_isLeavingOrClosed = true;
_tracer.trace('call.leaveReason', reason);
_tracer.trace(TraceTag.callLeave, reason);
sfuWS.leave(sessionId: sessionId, reason: reason);
}

Expand Down Expand Up @@ -719,25 +720,25 @@ class CallSession extends Disposable {
} else if (event is SfuParticipantLeftEvent) {
await _onParticipantLeft(event);
} else if (event is SfuTrackPublishedEvent) {
_tracer.trace('TrackPublished', event.toJson());
_tracer.trace(TraceTag.trackPublished, event.toJson());
await _onTrackPublished(event);
} else if (event is SfuTrackUnpublishedEvent) {
_tracer.trace('TrackUnpublish', event.toJson());
_tracer.trace(TraceTag.trackUnpublished, event.toJson());
await _onTrackUnpublished(event);
} else if (event is SfuChangePublishQualityEvent) {
_tracer.trace('PublishQualityChanged', event.toJson());
_tracer.trace(TraceTag.changePublishQuality, event.toJson());
await _onPublishQualityChanged(event);
} else if (event is SfuChangePublishOptionsEvent) {
_tracer.trace('PublishOptionsChanged', event.toJson());
_tracer.trace(TraceTag.changePublishOptions, event.toJson());
await _onPublishOptionsChanged(event);
} else if (event is SfuIceRestartEvent) {
await _onIceRestart(event);
} else if (event is SfuGoAwayEvent) {
_tracer.trace('GoAway', event.toJson());
_tracer.trace(TraceTag.goAway, event.toJson());
} else if (event is SfuErrorEvent) {
_tracer.trace('Error', event.toJson());
_tracer.trace(TraceTag.error, event.toJson());
} else if (event is SfuCallEndedEvent) {
_tracer.trace('CallEnded', event.toJson());
_tracer.trace(TraceTag.callEnded, event.toJson());
}

if (event is SfuJoinResponseEvent) {
Expand All @@ -749,7 +750,7 @@ class CallSession extends Disposable {
} else if (event is SfuParticipantLeftEvent) {
stateManager.sfuParticipantLeft(event);
} else if (event is SfuConnectionQualityChangedEvent) {
_tracer.trace('ConnectionQualityChanged', event.toJson());
_tracer.trace(TraceTag.connectionQualityChanged, event.toJson());
stateManager.sfuConnectionQualityChanged(event);
} else if (event is SfuAudioLevelChangedEvent) {
stateManager.sfuUpdateAudioLevelChanged(event);
Expand All @@ -762,6 +763,7 @@ class CallSession extends Disposable {
} else if (event is SfuPinsUpdatedEvent) {
stateManager.sfuPinsUpdated(event.pins);
} else if (event is SfuInboundStateNotificationEvent) {
_tracer.trace(TraceTag.inboundVideoState, event.toJson());
stateManager.sfuInboundStateNotification(event);
}
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import '../../webrtc/rtc_media_device/rtc_media_device_notifier.dart';
import '../session/call_session.dart';
import '../state/call_state_notifier.dart';
import 'trace_record.dart';
import 'trace_tag.dart';
import 'tracer.dart';

class SfuStatsReporter {
Expand All @@ -38,7 +39,7 @@ class SfuStatsReporter {
_thermalStatus = _ThermalMonitor.lastStatus;
_thermalStatusSubscription = sharedStream.listen((ThermalStatus status) {
_thermalStatus = status;
_deviceTracer.trace('device.thermalState', status.name);
_deviceTracer.trace(TraceTag.deviceThermalState, status.name);
});
}

Expand Down Expand Up @@ -172,7 +173,7 @@ class SfuStatsReporter {
try {
lowPowerMode = await Battery().isInBatterySaveMode;
if (lowPowerMode != _lastLowPowerMode) {
_deviceTracer.trace('device.lowPowerMode', lowPowerMode);
_deviceTracer.trace(TraceTag.deviceLowPowerMode, lowPowerMode);
_lastLowPowerMode = lowPowerMode;
}
} on PlatformException {
Expand Down
Loading
Loading