@class NSMutableDictionary, VCStatsRecorder, NSObject, VCConnectionSelector, VCWRMHandler, VCLinkProbingHandler, NSMutableArray, NSString, AVCStatisticsCollector, VCConnectionHealthMonitor, VCWifiAssistManager, VCDuplicationHandler, VCCoreMotionManager; @protocol VCConnectionProtocol, VCConnectionManagerDelegate, OS_dispatch_queue; @interface VCConnectionManager : NSObject <VCConnectionHealthMonitorDelegate, VCWifiAssistManagerDelegate, VCLinkProbingHandlerDelegate, VCCoreMotionManagerDelegate> { struct tagVCConnectionManagerRealtimeInstanceVTable { void /* function */ *copyConnection; void /* function */ *updateConnectionForDuplication; void /* function */ *synchronizeParticipantGenerationCounter; void /* function */ *isSourceOnCellularIPv6; void /* function */ *copyPrimaryConnection; void /* function */ *setPrimaryConnection; void /* function */ *updatePacketAndByteCount; void /* function */ *addLinkProbingTelemetry; } _vTable; BOOL _isStarted; int _connectionSelectionVersion; struct _opaque_pthread_rwlock_t { long long __sig; char __opaque[192]; } _stateRWlock; id<VCConnectionProtocol> _primaryConnection; NSMutableArray *_connectionArray; struct opaqueRTCReporting { } *_reportingAgent; BOOL _isInitialConnectionEstablished; id _delegate; NSObject<OS_dispatch_queue> *_delegateQueue; void /* function */ *_duplicationCallback; BOOL _enableDuplication; double _lastConnectionUnstableTime; NSObject<OS_dispatch_queue> *_callbackQueue; void *_duplicationContext; BOOL _duplicationPending; BOOL _isPrimaryLocalUsingCell; VCWifiAssistManager *_vcWifiAssist; BOOL _hasAssertedCell; struct { double lastReceivedPacketTime; double lastReceivedPacketOnPrimaryTime; double lastReportTime; double maxPrimaryNoPacketInterval; double noPacketInterval; BOOL isConnectionPaused; int type; } _localConnectionStats; struct { double lastReceivedPacketTime; double lastReceivedPacketOnPrimaryTime; double lastReportTime; double maxPrimaryNoPacketInterval; double noPacketInterval; BOOL isConnectionPaused; int type; } _remoteConnectionStats; VCWRMHandler *_wrmHandler; VCDuplicationHandler *_duplicationHandler; VCConnectionSelector *_connectionSelector; double _lastDefaultCheckTime; double _lastTransitionToFECTime; double _lastiRATCheckTime; double _iRATNotificationRequestTime; int _localWRMLinkTypeFromDefaults; BOOL _allowRequestForWRMNotification; BOOL _forceHandoverToCell; BOOL _disableRemoteInterfaceInference; void /* function */ *_wrmStatusUpdateCallback; void /* function */ *_wrmRequestNotificationCallback; void *_wrmCallbacksContext; struct { BOOL preferRelayOverP2P; BOOL preferIPv6OverIPv4; BOOL preferNonVPN; BOOL e2eCriteriaEnabled; BOOL preferE2E; } _connectionSelectionPolicy; int _localRATTypeOverride; int _localWRMAlertFromDefaults; VCLinkProbingHandler *_linkProbingHandler; struct tagVCNWConnectionMonitor { } *_nwMonitor; int _mediaHealthStatisticsHandlerIndex; NSObject<OS_dispatch_queue> *_nwConnectionMonitorQueue; unsigned char _preferRelayOverP2PReason; struct tagVCNetworkConditionMonitor { } *_networkConditionMonitor; BOOL _isRTXSupported; VCCoreMotionManager *_coreMotionManager; BOOL _isNWConnectionMonitorEnabled; BOOL _ignoreNWConnectionMonitorNotification; NSString *_nwMonitorInterfaceName; struct { unsigned char version; unsigned char direction; unsigned char interfaceType; unsigned long long timestamp; unsigned long long maxThroughputBps; unsigned long long totalByteCount; unsigned int flushableQueueSize; unsigned int nonFlushableQueueSize; unsigned int averageDelayMillisecond; unsigned long long averageThroughputBps; int rateTrendSuggestion; unsigned int packetLossPerFrame; union { struct { unsigned char frequencyBand; unsigned char intermittentState; unsigned short estimatedIntermittentPeriod; unsigned short singleOutagePeriod; unsigned char btCoex; unsigned char radioCoex; unsigned char qualityScoreDelayRx; unsigned char qualityScoreDelayTx; unsigned char qualityScoreLossRx; unsigned char qualityScoreLossTx; unsigned char qualityScoreChannel; float offChannelTimeRatio; BOOL detectedFrequentOffChannelActivity; unsigned short wlanDutyCycle; unsigned int wifiObservedTxBitrate[6]; } wifi; struct { unsigned char radioAccessTechnology; short referenceSignalLevel; short signalLevel; char signalQuality; unsigned char uplinkBLER; unsigned char downlinkBLER; unsigned char bandwidthLimitationIndication; unsigned char cdrxState; unsigned short cdrxCycle; unsigned short estimatedOutagePeriod; unsigned char outageState; } baseband; } ; } _lastNWStatistics; id<VCConnectionProtocol> _lastActivePrimaryConnection; NSMutableDictionary *_mediaDegradedHistories; NSMutableDictionary *_mediaDegradedHistoryIndices; NSMutableDictionary *_aggregateStallTimeDuration; BOOL _isDuplicationAllowedForMediaDegraded; int _endToEndConnectionStatisticsHandlerIndex; int _serverBasedConnectionStatisticsHandlerIndex; BOOL _isVideoExpected; BOOL _isPrimaryLinkUsable; BOOL _resetMediaHealthStats; int _wrmPendingBitrateCapDelta; BOOL _isWRMNotificationPending; struct { int applicationType; int linkTypeSuggestion; unsigned long long linkTypeChangeReasonCode; char linkTypeChangeReasonString[128]; unsigned long long linkBandwidthMin; unsigned long long linkBandwidthMax; } _savedWRMNotification; unsigned int _downlinkTargetBitrate; unsigned int _downlinkTargetCellBitrateCap; BOOL _useMediaDrivenDuplicationFeatureFlag; double _mediaDegradedThreshold; BOOL _previousNoRemoteInProgress; long long _initialSentBytes; long long _initialReceivedBytes; BOOL _dropLinkRecommendation; unsigned char _linkPreferSuggestion; unsigned char _linkConfidenceScore; unsigned char _linkPreferDecision; BOOL _reportLinkPreferSuggestion; unsigned char _linkIPPreference; BOOL _useIDSLinkSuggestionFeatureFlag; NSObject<OS_dispatch_queue> *_reportingQueue; _Atomic unsigned int _sendSuccessCountSinceLastCheck; _Atomic unsigned int _sendFailureCountSinceLastCheck; int _shouldForceRelayLinksWhenScreenEnabled; BOOL _canUseP2PLinks; double _brokenBackhaulDetectionTriggerThreshold; double _lastReceivedFeedbackTime; BOOL _brokenBackhaulDetectionStarted; BOOL _isUserMoving; struct tagVCOverlaySource { struct __CFRuntimeBase { unsigned long long x0; _Atomic unsigned long long x1; } x0; long long x1; unsigned int x2; unsigned char x3; int x4; int x5; struct tagVCOverlaySourceInfo *x6; struct tagVCOverlaySourceInfo *x7; struct tagVCOverlaySourceInfo *x8; } *_overlaySource; } @property (retain, nonatomic) id<VCConnectionProtocol> lastPrimaryConnectionInUse; @property long long overlayToken; @property unsigned int callID; @property int relayServerProvider; @property (readonly) BOOL isPreWarmStateEnabled; @property (nonatomic) BOOL remotePreWarmStateEnabled; @property unsigned char preferredLocalInterfaceForDuplication; @property unsigned char preferredRemoteInterfaceForDuplication; @property (readonly) BOOL isLocalCellularInterfaceUsed; @property id<VCConnectionManagerDelegate> delegate; @property BOOL isAudioOnly; @property BOOL supportDuplication; @property (retain, nonatomic) id<VCConnectionProtocol> secondaryConnection; @property (retain, nonatomic) id<VCConnectionProtocol> connectionForDuplication; @property (readonly) int connectionCount; @property (readonly) unsigned long long mediaExcessiveCellularTxBytes; @property (readonly) unsigned long long mediaExcessiveCellularRxBytes; @property (readonly) unsigned long long signalingExcessiveCellularTxBytes; @property (readonly) unsigned long long signalingExcessiveCellularRxBytes; @property (readonly) unsigned long long budgetConsumingCellularTxBytes; @property (readonly) unsigned long long budgetConsumingCellularRxBytes; @property (readonly) unsigned long long mediaCellularTxBytes; @property (readonly) unsigned long long mediaCellularRxBytes; @property (readonly) unsigned long long mediaWifiTxBytes; @property (readonly) unsigned long long mediaWifiRxBytes; @property (readonly) double noRemotePacketInterval; @property (readonly) double remoteNoRemotePacketInterval; @property (readonly, nonatomic) VCStatsRecorder *statsRecorder; @property (nonatomic, setter=setPreferRelayOverP2PEnabled:) BOOL preferRelayOverP2PEnabled; @property BOOL fastMediaDuplicationEnabled; @property BOOL cellPrimaryInterfaceChangeEnabled; @property BOOL duplicateImportantPktsEnabled; @property BOOL lowNetworkModeEnabled; @property BOOL duplicationEnhancementEnabled; @property (nonatomic, setter=setiRATDuplicationEnabled:) BOOL iRATDuplicationEnabled; @property double noRemoteDuplicationThresholdFast; @property unsigned int realRATType; @property (readonly) unsigned char linkProbingCapabilityVersion; @property (nonatomic) unsigned char remoteLinkProbingCapabilityVersion; @property (readonly) double primaryConnHealthAllowedDelay; @property (retain, nonatomic) AVCStatisticsCollector *statisticsCollector; @property (readonly, nonatomic) VCConnectionHealthMonitor *connectionHealthMonitor; @property BOOL optIntoExistingSubscribedStreams; @property (nonatomic) BOOL isDuplicationAllowed; @property (nonatomic) BOOL isOneToOneModeEnabled; @property (nonatomic) BOOL useMediaDrivenDuplication; @property (nonatomic) BOOL startConnectionHealthMonitoring; @property (nonatomic) BOOL isRemoteMediaQualityDegraded; @property (readonly) unsigned int sendSuccessCountSinceLastCheck; @property (readonly) unsigned int sendFailureCountSinceLastCheck; @property (readonly) _Atomic unsigned long long onTheWireTotalBytesSentSinceLastCheck; @property (readonly) _Atomic unsigned long long onTheWireTotalBytesReceivedSinceLastCheck; @property (nonatomic) BOOL isOneToOneScreenEnabled; @property (nonatomic) BOOL isRemoteNetworkQualityDegraded; @property (readonly) BOOL enableNetworkConditionMonitoring; @property (readonly) BOOL enableMotionBasedDuplication; @property (nonatomic) BOOL isUplinkRetransmissionSupported; @property (readonly) unsigned long long hash; @property (readonly) Class superclass; @property (readonly, copy) NSString *description; @property (readonly, copy) NSString *debugDescription; - (int)removeConnection:(id)a0; - (id)init; - (void)dealloc; - (void)start; - (int)addConnection:(id)a0; - (void)stop; - (void)flushLinkProbingStatusWithOptions:(id)a0; - (void)startActiveProbingWithOptions:(id)a0; - (void)stopActiveProbingWithOptions:(id)a0; - (void)checkAndUpdatePrimaryConnection; - (void)queryProbingResultsWithOptions:(id)a0; - (void)updateWRMDuplicationForHandover; - (id)activeConnectionRegistry; - (void)addMediaHealthStatsHistoryEntryForParticipantID:(id)a0; - (void)aggregateStallTimeDuration:(struct { double x0; BOOL x1; double x2; double x3; } *)a0 idsParticipantID:(id)a1; - (void)applyLinkFlags:(unsigned short)a0 isCellular:(BOOL)a1; - (void)applyLinkRecommendation; - (void)applyRemoteLinkFlags:(unsigned short)a0 isCellular:(BOOL)a1; - (void)checkForCachedWRMNotification; - (void)checkMediaQualityDegradedForParticipantID:(id)a0; - (void)checkpointPrimaryConnection:(id)a0; - (void)configureNWConnectionMonitor:(id)a0; - (void)connectionHealthDidUpdate:(int)a0 isLocalConnection:(BOOL)a1; - (void)createOverlaySource; - (void)deregisterPeriodicTask; - (void)destroyNWMonitor; - (void)destroyNWMonitorInternal; - (void)didChangeWifiAssistAvailable:(BOOL)a0 reason:(unsigned char)a1; - (void)didUpdateMotionActivity:(id)a0; - (void)disableRemotePreferredInterfaceInference:(BOOL)a0; - (void)duplicationStateUpdateWithEvent:(struct { unsigned char x0; BOOL x1; BOOL x2; BOOL x3; BOOL x4; BOOL x5; BOOL x6; BOOL x7; int x8; BOOL x9; BOOL x10; })a0; - (unsigned int)getByteCountWithIndex:(unsigned char)a0 isOutgoing:(BOOL)a1; - (int)getCellularMTUForActiveConnectionWithQuality:(int)a0; - (int)getCellularTechForActiveConnectionWithQuality:(int)a0 forLocalInterface:(BOOL)a1; - (struct { BOOL x0; BOOL x1; BOOL x2; BOOL x3; BOOL x4; } *)getConnectionSelectionPolicy; - (int)getConnectionSelectionVersionFromFrameworkVersion:(id)a0; - (int)getConnectionTypeForActiveConnectionWithQuality:(int)a0 forLocalInterface:(BOOL)a1; - (unsigned int)getPacketCountWithIndex:(unsigned char)a0 isOutgoing:(BOOL)a1; - (void)getSentBytes:(long long *)a0 receivedBytes:(long long *)a1; - (void)invalidateNetworkConditionMonitor; - (BOOL)isBetterConnection:(id)a0 asPrimary:(BOOL)a1; - (BOOL)isBetterPrimaryConnectionAvailable; - (BOOL)isConnectedOnIPv6ForActiveConnectionWithQuality:(int)a0; - (BOOL)isConnectedOnRelayForActiveConnectionWithQuality:(int)a0; - (BOOL)isDuplicationAllowedForParticipantID:(id)a0 bucketsToSum:(int)a1 threshold:(double)a2; - (BOOL)isDuplicationEnabled; - (BOOL)isOptimalConnection:(id)a0 asPrimary:(BOOL)a1 interfaceMask:(int)a2; - (void)periodicTask:(void *)a0; - (void)primaryConnectionChanged:(id)a0 oldPrimaryConnection:(id)a1; - (int)processConnectionHealthFromControlInfo:(void *)a0; - (int)processRemoteWRMSuggestion:(int)a0 isRemoteDuplicating:(BOOL)a1; - (void)processWRMCoexMetrics:(id)a0; - (void)promoteSecondaryConnectionToPrimary:(id)a0; - (void)registerPeriodicTask; - (void)registerStatisticsHandlers; - (void)removeMediaHealthStatsHistoryEntryForParticipantID:(id)a0; - (void)renewNWMonitor; - (void)reportActiveConnectionOneToOne:(id)a0 isAudioOnly:(BOOL)a1; - (void)reportConnection:(id)a0 isInitialConnection:(BOOL)a1; - (void)reportConnectionUpdateWithRespCode:(unsigned short)a0; - (void)reportConnectionUpdateWithResponseCode:(unsigned short)a0 delay:(double)a1; - (void)reportCurrentPrimaryConnection; - (void)reportFirstActiveConnectionOneToOne:(id)a0 remoteOSVersion:(id)a1 redState:(BOOL)a2 isAudioOnly:(BOOL)a3; - (void)reportLinkProbingStatsWithDuplicationJustStarted:(BOOL)a0; - (void)reportLinkSuggestion; - (void)reportNoPacketUpdateUsingCurrentTime:(double)a0 lastReceivedPacketTime:(double)a1; - (void)reselectPrimaryConnection; - (void)resetConnectionStatTimers; - (void)resetMediaHealthStats; - (int)setConnectionHealthOnControlInfo:(void *)a0; - (void)setConnectionPause:(BOOL)a0 isLocalConnection:(BOOL)a1; - (void)setConnectionSelectionVersionWithLocalFrameworkVersion:(id)a0 remoteFrameworkVersion:(id)a1; - (void)setDefaultLinkProbingCapabilityVersionForDeviceRole:(int)a0; - (void)setDuplicationCallback:(void /* function */ *)a0 withContext:(void *)a1; - (void)setDuplicationDownlinkCellBitrateCap:(unsigned int)a0 currentBitrate:(unsigned int)a1; - (void)setPreferRelayOverP2P:(BOOL)a0 reason:(unsigned char)a1; - (void)setReportingAgent:(struct opaqueRTCReporting { } *)a0; - (void)setUpVTable; - (void)setVCNWConnectionMonitorStatisticsHandler; - (int)setWRMUpdateCallback:(void /* function */ *)a0 requestNotificationCallback:(void /* function */ *)a1 withContext:(void *)a2 completionHandler:(id /* block */)a3; - (void)setupConnectionHealthMonitor; - (void)setupConnectionHealthMonitorMultiway; - (void)setupNetworkConditionMonitor; - (BOOL)shouldAcceptDataFromSourceDestinationInfo:(struct tagVCSourceDestinationInfo { int x0; union { struct { struct tagIPPORT { int x0; char x1[16]; union { unsigned int x0; unsigned char x1[16]; } x2; unsigned short x3; } x0; struct tagIPPORT { int x0; char x1[16]; union { unsigned int x0; unsigned char x1[16]; } x2; unsigned short x3; } x1; struct { BOOL x0; unsigned short x1; } x2; } x0; struct { int x0; int x1; struct tagIPPORT { int x0; char x1[16]; union { unsigned int x0; unsigned char x1[16]; } x2; unsigned short x3; } x2; int x3; } x1; struct { unsigned int x0; struct { char x0; unsigned short x1; unsigned char x2; unsigned short x3; unsigned char x4; } x1; BOOL x2; } x2; struct { id x0; } x3; } x1; unsigned int x2; struct tagVCSourceDestinationInfo *x3; void *x4; } *)a0; - (BOOL)shouldDropCurrentPrimaryConnectionWithConnectionStats:(struct { double x0; double x1; double x2; double x3; double x4; BOOL x5; int x6; } *)a0; - (void)startBrokenNetworkDetection; - (void)stopBrokenNetworkDetection; - (void)unregisterStatisticsHandlers; - (void)updateAllBitrateCapsForConnection:(id)a0; - (void)updateCellularMTU:(int)a0; - (void)updateCellularTech:(int)a0 forLocalInterface:(BOOL)a1; - (void)updateConnectionHealthWithVCStatisticsMessage:(struct tagVCStatisticsMessage { int x0; int x1; double x2; BOOL x3; BOOL x4; BOOL x5; BOOL x6; union { struct { unsigned int x0; unsigned int x1; unsigned int x2; unsigned int x3; unsigned int x4; unsigned int x5; double x6; double x7; double x8; double x9; double x10; char x11[64]; int x12; } x0; struct { unsigned int x0; unsigned int x1; unsigned int x2; unsigned int x3; unsigned int x4; unsigned int x5; unsigned int x6; unsigned int x7; unsigned int x8; unsigned int x9; unsigned int x10; unsigned int x11; double x12; double x13; unsigned int x14; unsigned int x15; double x16; unsigned int x17; BOOL x18; struct { int x0; unsigned int x1; unsigned int x2; unsigned int x3; double x4; double x5; double x6; unsigned int x7; unsigned int x8; } x19; struct { unsigned short x0; BOOL x1; BOOL x2; unsigned int x3; } x20; struct tagVCStatisticsECNStats { unsigned short x0; unsigned short x1; } x21; struct tagVCStatisticsECNStats { unsigned short x0; unsigned short x1; } x22; BOOL x23; } x1; struct { double x0; double x1; double x2; unsigned int x3; unsigned int x4; unsigned int x5; unsigned int x6; unsigned int x7; unsigned long long x8; unsigned int x9; } x2; struct { unsigned int x0; BOOL x1; BOOL x2; BOOL x3; unsigned int x4; unsigned int x5; double x6; unsigned int x7; BOOL x8; struct { int x0; unsigned int x1; unsigned int x2; unsigned int x3; double x4; double x5; double x6; unsigned int x7; unsigned int x8; } x9; } x3; struct { unsigned char x0; unsigned int x1; unsigned int x2; unsigned int x3; unsigned int x4; unsigned int x5; unsigned int x6; unsigned int x7; unsigned int x8; unsigned int x9; double x10; double x11; double x12; double x13; unsigned int x14; unsigned int x15; unsigned int x16; unsigned int x17; } x4; struct { unsigned int x0; unsigned int x1; unsigned int x2; double x3; } x5; struct { int x0; unsigned int x1; unsigned int x2; unsigned int x3; double x4; double x5; double x6; unsigned int x7; unsigned int x8; } x6; struct { unsigned int x0; unsigned int x1; unsigned int x2; unsigned int x3; } x7; struct { unsigned int x0; unsigned int x1; unsigned int x2; unsigned int x3; unsigned int x4; unsigned int x5; BOOL x6; unsigned int x7; } x8; struct { unsigned int x0; unsigned int x1; unsigned int x2; unsigned int x3; float x4; BOOL x5; BOOL x6; double x7; double x8; unsigned int x9; unsigned int x10; unsigned int x11; unsigned long long x12; } x9; struct { unsigned char x0; unsigned char x1; unsigned char x2; unsigned long long x3; unsigned long long x4; unsigned long long x5; unsigned int x6; unsigned int x7; unsigned int x8; unsigned long long x9; int x10; unsigned int x11; union { struct { unsigned char x0; unsigned char x1; unsigned short x2; unsigned short x3; unsigned char x4; unsigned char x5; unsigned char x6; unsigned char x7; unsigned char x8; unsigned char x9; unsigned char x10; float x11; BOOL x12; unsigned short x13; unsigned int x14[6]; } x0; struct { unsigned char x0; short x1; short x2; char x3; unsigned char x4; unsigned char x5; unsigned char x6; unsigned char x7; unsigned short x8; unsigned short x9; unsigned char x10; } x1; } x12; } x10; struct tagVCStatisticsVideoLossFeedback { unsigned int x0; unsigned short x1; unsigned char x2; unsigned char x3; } x11; } x7; })a0; - (void)updateConnectionSelectionPolicyWithPreferE2E:(BOOL)a0; - (void)updateConnectionStatsWithIndicatorNoPacket:(struct { double x0; double x1; double x2; double x3; double x4; BOOL x5; int x6; } *)a0; - (void)updateConnectionStatsWithIndicatorNone:(struct { double x0; double x1; double x2; double x3; double x4; BOOL x5; int x6; } *)a0; - (void)updateConnectionStatsWithIndicatorOnlyPrimaryNoPacket:(struct { double x0; double x1; double x2; double x3; double x4; BOOL x5; int x6; } *)a0; - (void)updateConnectionStatsWithIndicatorPrimaryImproved:(struct { double x0; double x1; double x2; double x3; double x4; BOOL x5; int x6; } *)a0; - (void)updateDuplicationStateWithEventType:(unsigned char)a0; - (void)updateLinkPreferSuggestion:(id)a0; - (void)updateMediaDegradedHistoryWithCurrentAudioErasure:(double)a0 idsParticipantID:(id)a1; - (void)updateMediaDegradedHistoryWithCurrentVideoStallDuration:(double)a0 idsParticipantID:(id)a1; - (void)updateMediaDegradedHistoryWithValue:(double)a0 idsParticipantID:(id)a1; - (void)updateMediaHealthStats:(struct { double x0; BOOL x1; double x2; double x3; } *)a0 idsParticipantID:(id)a1; - (void)updateNegotiatedSettingsOnetoOne:(id)a0; - (void)updateOneToOneBitrateCapsForConnection:(id)a0; - (void)updateOverlaySource:(BOOL)a0 isRemoteOnCellular:(BOOL)a1 isRelay:(BOOL)a2; - (void)updateProbingResults:(id)a0; - (void)updateSessionStats:(unsigned short)a0; - (void)updateStatResponseResult:(id)a0; - (void)updateWithRemoteMediaHealthDuplication:(BOOL)a0; - (void)useConnectionAsPrimary:(id)a0; @end