@observertc/observer-js 0.9.26-beta → 0.30.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/ObservedCall.d.ts +54 -0
- package/lib/ObservedCall.d.ts.map +1 -0
- package/lib/ObservedCall.js +166 -0
- package/lib/ObservedClient.d.ts +73 -0
- package/lib/ObservedClient.d.ts.map +1 -0
- package/lib/ObservedClient.js +487 -0
- package/lib/ObservedInboundTrack.d.ts +65 -0
- package/lib/ObservedInboundTrack.d.ts.map +1 -0
- package/lib/ObservedInboundTrack.js +192 -0
- package/lib/ObservedOutboundTrack.d.ts +55 -0
- package/lib/ObservedOutboundTrack.d.ts.map +1 -0
- package/lib/ObservedOutboundTrack.js +166 -0
- package/lib/ObservedPeerConnection.d.ts +57 -0
- package/lib/ObservedPeerConnection.d.ts.map +1 -0
- package/lib/ObservedPeerConnection.js +217 -0
- package/lib/Observer.d.ts +26 -1465
- package/lib/Observer.d.ts.map +1 -1
- package/lib/Observer.js +53 -605
- package/lib/{sinks/ObserverSink.d.ts → ReportsCollector.d.ts} +7 -23
- package/lib/ReportsCollector.d.ts.map +1 -0
- package/lib/{sinks/ObserverSink.js → ReportsCollector.js} +27 -85
- package/lib/common/ReportsCollector.d.ts +21 -24
- package/lib/common/ReportsCollector.d.ts.map +1 -1
- package/lib/common/ReportsCollector.js +24 -0
- package/lib/common/SingleExecutor.d.ts +3 -0
- package/lib/common/SingleExecutor.d.ts.map +1 -0
- package/lib/common/SingleExecutor.js +31 -0
- package/lib/common/TypedEventEmitter.d.ts +22 -0
- package/lib/common/TypedEventEmitter.d.ts.map +1 -0
- package/lib/common/TypedEventEmitter.js +11 -0
- package/lib/common/callEventReports.d.ts.map +1 -0
- package/lib/common/logger.d.ts +3 -9
- package/lib/common/logger.d.ts.map +1 -1
- package/lib/common/logger.js +58 -141
- package/lib/common/types.d.ts +2 -14
- package/lib/common/types.d.ts.map +1 -1
- package/lib/common/utils.d.ts +1 -0
- package/lib/common/utils.d.ts.map +1 -1
- package/lib/common/utils.js +6 -1
- package/lib/index.d.ts +8 -19
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +7 -2
- package/package.json +1 -1
- package/src/ObservedCall.ts +201 -0
- package/src/ObservedClient.ts +681 -0
- package/src/ObservedInboundTrack.ts +238 -0
- package/src/ObservedOutboundTrack.ts +205 -0
- package/src/ObservedPeerConnection.ts +249 -0
- package/src/Observer.ts +86 -442
- package/src/{sinks/ObserverSink.ts → ReportsCollector.ts} +29 -94
- package/src/common/ReportsCollector.ts +48 -23
- package/src/common/SingleExecutor.ts +36 -0
- package/src/common/TypedEventEmitter.ts +32 -0
- package/src/common/logger.ts +58 -161
- package/src/common/types.ts +4 -24
- package/src/common/utils.ts +6 -0
- package/src/index.ts +12 -23
- package/lib/Evaluator.d.ts +0 -43
- package/lib/Evaluator.d.ts.map +0 -1
- package/lib/Evaluator.js +0 -171
- package/lib/common/Semaphore.d.ts +0 -31
- package/lib/common/Semaphore.d.ts.map +0 -1
- package/lib/common/Semaphore.js +0 -16
- package/lib/entries/CallEntry.d.ts +0 -619
- package/lib/entries/CallEntry.d.ts.map +0 -1
- package/lib/entries/CallEntry.js +0 -75
- package/lib/entries/ClientEntry.d.ts +0 -478
- package/lib/entries/ClientEntry.d.ts.map +0 -1
- package/lib/entries/ClientEntry.js +0 -114
- package/lib/entries/InboundTrackEntry.d.ts +0 -682
- package/lib/entries/InboundTrackEntry.d.ts.map +0 -1
- package/lib/entries/InboundTrackEntry.js +0 -76
- package/lib/entries/OutboundTrackEntry.d.ts +0 -682
- package/lib/entries/OutboundTrackEntry.d.ts.map +0 -1
- package/lib/entries/OutboundTrackEntry.js +0 -73
- package/lib/entries/PeerConnectionEntry.d.ts +0 -505
- package/lib/entries/PeerConnectionEntry.d.ts.map +0 -1
- package/lib/entries/PeerConnectionEntry.js +0 -144
- package/lib/entries/SfuEntry.d.ts +0 -150
- package/lib/entries/SfuEntry.d.ts.map +0 -1
- package/lib/entries/SfuEntry.js +0 -77
- package/lib/entries/SfuInboundRtpPadEntry.d.ts +0 -14
- package/lib/entries/SfuInboundRtpPadEntry.d.ts.map +0 -1
- package/lib/entries/SfuInboundRtpPadEntry.js +0 -49
- package/lib/entries/SfuOutboundRtpPadEntry.d.ts +0 -14
- package/lib/entries/SfuOutboundRtpPadEntry.d.ts.map +0 -1
- package/lib/entries/SfuOutboundRtpPadEntry.js +0 -47
- package/lib/entries/SfuSctpChannelEntry.d.ts +0 -12
- package/lib/entries/SfuSctpChannelEntry.d.ts.map +0 -1
- package/lib/entries/SfuSctpChannelEntry.js +0 -43
- package/lib/entries/SfuTransportEntry.d.ts +0 -82
- package/lib/entries/SfuTransportEntry.d.ts.map +0 -1
- package/lib/entries/SfuTransportEntry.js +0 -122
- package/lib/evaluators/SetClientsCoordinateEvaluator.d.ts +0 -9
- package/lib/evaluators/SetClientsCoordinateEvaluator.d.ts.map +0 -1
- package/lib/evaluators/SetClientsCoordinateEvaluator.js +0 -95
- package/lib/middlewares/CallOperationsContext.d.ts +0 -18
- package/lib/middlewares/CallOperationsContext.d.ts.map +0 -1
- package/lib/middlewares/CallOperationsContext.js +0 -27
- package/lib/middlewares/CallProcessor.d.ts +0 -6
- package/lib/middlewares/CallProcessor.d.ts.map +0 -1
- package/lib/middlewares/CallProcessor.js +0 -36
- package/lib/middlewares/CommitTransactionMiddleware.d.ts +0 -6
- package/lib/middlewares/CommitTransactionMiddleware.d.ts.map +0 -1
- package/lib/middlewares/CommitTransactionMiddleware.js +0 -179
- package/lib/middlewares/DeleteOutdatedCallEntries.d.ts +0 -6
- package/lib/middlewares/DeleteOutdatedCallEntries.d.ts.map +0 -1
- package/lib/middlewares/DeleteOutdatedCallEntries.js +0 -121
- package/lib/middlewares/DeleteOutdatedSfuEntries.d.ts +0 -6
- package/lib/middlewares/DeleteOutdatedSfuEntries.d.ts.map +0 -1
- package/lib/middlewares/DeleteOutdatedSfuEntries.js +0 -127
- package/lib/middlewares/Middleware.d.ts +0 -3
- package/lib/middlewares/Middleware.d.ts.map +0 -1
- package/lib/middlewares/Middleware.js +0 -21
- package/lib/middlewares/Processor.d.ts +0 -9
- package/lib/middlewares/Processor.d.ts.map +0 -1
- package/lib/middlewares/Processor.js +0 -54
- package/lib/middlewares/TransactionContext.d.ts +0 -35
- package/lib/middlewares/TransactionContext.d.ts.map +0 -1
- package/lib/middlewares/TransactionContext.js +0 -90
- package/lib/middlewares/TransactoinProcessor.d.ts +0 -6
- package/lib/middlewares/TransactoinProcessor.d.ts.map +0 -1
- package/lib/middlewares/TransactoinProcessor.js +0 -17
- package/lib/middlewares/VisitObservedCallsMiddleware.d.ts +0 -7
- package/lib/middlewares/VisitObservedCallsMiddleware.d.ts.map +0 -1
- package/lib/middlewares/VisitObservedCallsMiddleware.js +0 -96
- package/lib/middlewares/VisitObservedSfusMiddleware.d.ts +0 -6
- package/lib/middlewares/VisitObservedSfusMiddleware.d.ts.map +0 -1
- package/lib/middlewares/VisitObservedSfusMiddleware.js +0 -151
- package/lib/middlewares/visitors/visitClient.d.ts +0 -5
- package/lib/middlewares/visitors/visitClient.d.ts.map +0 -1
- package/lib/middlewares/visitors/visitClient.js +0 -174
- package/lib/middlewares/visitors/visitInboundAudioTrack.d.ts +0 -5
- package/lib/middlewares/visitors/visitInboundAudioTrack.d.ts.map +0 -1
- package/lib/middlewares/visitors/visitInboundAudioTrack.js +0 -93
- package/lib/middlewares/visitors/visitInboundVideoTrack.d.ts +0 -5
- package/lib/middlewares/visitors/visitInboundVideoTrack.d.ts.map +0 -1
- package/lib/middlewares/visitors/visitInboundVideoTrack.js +0 -94
- package/lib/middlewares/visitors/visitOutboundAudioTrack.d.ts +0 -5
- package/lib/middlewares/visitors/visitOutboundAudioTrack.d.ts.map +0 -1
- package/lib/middlewares/visitors/visitOutboundAudioTrack.js +0 -90
- package/lib/middlewares/visitors/visitOutboundVideoTarck.d.ts +0 -5
- package/lib/middlewares/visitors/visitOutboundVideoTarck.d.ts.map +0 -1
- package/lib/middlewares/visitors/visitOutboundVideoTarck.js +0 -90
- package/lib/middlewares/visitors/visitPeerConnection.d.ts +0 -5
- package/lib/middlewares/visitors/visitPeerConnection.d.ts.map +0 -1
- package/lib/middlewares/visitors/visitPeerConnection.js +0 -111
- package/lib/middlewares/visitors/visitSfu.d.ts +0 -5
- package/lib/middlewares/visitors/visitSfu.d.ts.map +0 -1
- package/lib/middlewares/visitors/visitSfu.js +0 -78
- package/lib/middlewares/visitors/visitSfuInboundRtpPad.d.ts +0 -5
- package/lib/middlewares/visitors/visitSfuInboundRtpPad.d.ts.map +0 -1
- package/lib/middlewares/visitors/visitSfuInboundRtpPad.js +0 -56
- package/lib/middlewares/visitors/visitSfuOutboundRtpPad.d.ts +0 -5
- package/lib/middlewares/visitors/visitSfuOutboundRtpPad.d.ts.map +0 -1
- package/lib/middlewares/visitors/visitSfuOutboundRtpPad.js +0 -56
- package/lib/middlewares/visitors/visitSfuSctpChannel.d.ts +0 -5
- package/lib/middlewares/visitors/visitSfuSctpChannel.d.ts.map +0 -1
- package/lib/middlewares/visitors/visitSfuSctpChannel.js +0 -55
- package/lib/middlewares/visitors/visitSfuTransport.d.ts +0 -5
- package/lib/middlewares/visitors/visitSfuTransport.d.ts.map +0 -1
- package/lib/middlewares/visitors/visitSfuTransport.js +0 -56
- package/lib/processes/closePeerConnectionProcess.d.ts +0 -10
- package/lib/processes/closePeerConnectionProcess.d.ts.map +0 -1
- package/lib/processes/closePeerConnectionProcess.js +0 -51
- package/lib/processes/detachClientProcess.d.ts +0 -14
- package/lib/processes/detachClientProcess.d.ts.map +0 -1
- package/lib/processes/detachClientProcess.js +0 -106
- package/lib/processes/findRemoteMatches.d.ts +0 -9
- package/lib/processes/findRemoteMatches.d.ts.map +0 -1
- package/lib/processes/findRemoteMatches.js +0 -96
- package/lib/processes/inboundTrackRemoved.d.ts +0 -9
- package/lib/processes/inboundTrackRemoved.d.ts.map +0 -1
- package/lib/processes/inboundTrackRemoved.js +0 -22
- package/lib/processes/joinClientProcess.d.ts +0 -11
- package/lib/processes/joinClientProcess.d.ts.map +0 -1
- package/lib/processes/joinClientProcess.js +0 -120
- package/lib/processes/outboundTrackRemoved.d.ts +0 -9
- package/lib/processes/outboundTrackRemoved.d.ts.map +0 -1
- package/lib/processes/outboundTrackRemoved.js +0 -22
- package/lib/samples/ObservedCall.d.ts +0 -17
- package/lib/samples/ObservedCall.d.ts.map +0 -1
- package/lib/samples/ObservedCall.js +0 -29
- package/lib/samples/ObservedCalls.d.ts +0 -19
- package/lib/samples/ObservedCalls.d.ts.map +0 -1
- package/lib/samples/ObservedCalls.js +0 -113
- package/lib/samples/ObservedClient.d.ts +0 -28
- package/lib/samples/ObservedClient.d.ts.map +0 -1
- package/lib/samples/ObservedClient.js +0 -110
- package/lib/samples/ObservedInboundAudioTrack.d.ts +0 -17
- package/lib/samples/ObservedInboundAudioTrack.d.ts.map +0 -1
- package/lib/samples/ObservedInboundAudioTrack.js +0 -17
- package/lib/samples/ObservedInboundVideoTrack.d.ts +0 -17
- package/lib/samples/ObservedInboundVideoTrack.d.ts.map +0 -1
- package/lib/samples/ObservedInboundVideoTrack.js +0 -17
- package/lib/samples/ObservedOutboundAudioTrack.d.ts +0 -16
- package/lib/samples/ObservedOutboundAudioTrack.d.ts.map +0 -1
- package/lib/samples/ObservedOutboundAudioTrack.js +0 -17
- package/lib/samples/ObservedOutboundVideoTrack.d.ts +0 -16
- package/lib/samples/ObservedOutboundVideoTrack.d.ts.map +0 -1
- package/lib/samples/ObservedOutboundVideoTrack.js +0 -17
- package/lib/samples/ObservedPeerConnection.d.ts +0 -47
- package/lib/samples/ObservedPeerConnection.d.ts.map +0 -1
- package/lib/samples/ObservedPeerConnection.js +0 -130
- package/lib/samples/ObservedSfu.d.ts +0 -27
- package/lib/samples/ObservedSfu.d.ts.map +0 -1
- package/lib/samples/ObservedSfu.js +0 -65
- package/lib/samples/ObservedSfuInboundRtpPad.d.ts +0 -15
- package/lib/samples/ObservedSfuInboundRtpPad.d.ts.map +0 -1
- package/lib/samples/ObservedSfuInboundRtpPad.js +0 -17
- package/lib/samples/ObservedSfuOutboundRtpPad.d.ts +0 -15
- package/lib/samples/ObservedSfuOutboundRtpPad.d.ts.map +0 -1
- package/lib/samples/ObservedSfuOutboundRtpPad.js +0 -17
- package/lib/samples/ObservedSfuSctpChannel.d.ts +0 -15
- package/lib/samples/ObservedSfuSctpChannel.d.ts.map +0 -1
- package/lib/samples/ObservedSfuSctpChannel.js +0 -17
- package/lib/samples/ObservedSfuTransport.d.ts +0 -30
- package/lib/samples/ObservedSfuTransport.d.ts.map +0 -1
- package/lib/samples/ObservedSfuTransport.js +0 -86
- package/lib/samples/ObservedSfus.d.ts +0 -16
- package/lib/samples/ObservedSfus.d.ts.map +0 -1
- package/lib/samples/ObservedSfus.js +0 -72
- package/lib/sinks/ObserverSink.d.ts.map +0 -1
- package/lib/sinks/callEventReports.d.ts.map +0 -1
- package/lib/sources/ObservedCallSource.d.ts +0 -18
- package/lib/sources/ObservedCallSource.d.ts.map +0 -1
- package/lib/sources/ObservedCallSource.js +0 -2
- package/lib/sources/ObservedClientSource.d.ts +0 -19
- package/lib/sources/ObservedClientSource.d.ts.map +0 -1
- package/lib/sources/ObservedClientSource.js +0 -2
- package/lib/sources/ObservedSfuSource.d.ts +0 -15
- package/lib/sources/ObservedSfuSource.d.ts.map +0 -1
- package/lib/sources/ObservedSfuSource.js +0 -2
- package/lib/sources/Sources.d.ts +0 -47
- package/lib/sources/Sources.d.ts.map +0 -1
- package/lib/sources/Sources.js +0 -211
- package/src/Evaluator.ts +0 -229
- package/src/common/Semaphore.ts +0 -45
- package/src/entries/CallEntry.ts +0 -62
- package/src/entries/ClientEntry.ts +0 -106
- package/src/entries/InboundTrackEntry.ts +0 -74
- package/src/entries/OutboundTrackEntry.ts +0 -72
- package/src/entries/PeerConnectionEntry.ts +0 -133
- package/src/entries/SfuEntry.ts +0 -62
- package/src/entries/SfuInboundRtpPadEntry.ts +0 -46
- package/src/entries/SfuOutboundRtpPadEntry.ts +0 -44
- package/src/entries/SfuSctpChannelEntry.ts +0 -39
- package/src/entries/SfuTransportEntry.ts +0 -109
- package/src/evaluators/SetClientsCoordinateEvaluator.ts +0 -78
- package/src/middlewares/CallOperationsContext.ts +0 -56
- package/src/middlewares/CallProcessor.ts +0 -38
- package/src/middlewares/CommitTransactionMiddleware.ts +0 -328
- package/src/middlewares/DeleteOutdatedCallEntries.ts +0 -159
- package/src/middlewares/DeleteOutdatedSfuEntries.ts +0 -168
- package/src/middlewares/Middleware.ts +0 -10
- package/src/middlewares/Processor.ts +0 -59
- package/src/middlewares/TransactionContext.ts +0 -176
- package/src/middlewares/TransactoinProcessor.ts +0 -28
- package/src/middlewares/VisitObservedCallsMiddleware.ts +0 -172
- package/src/middlewares/VisitObservedSfusMiddleware.ts +0 -203
- package/src/middlewares/visitors/visitClient.ts +0 -239
- package/src/middlewares/visitors/visitInboundAudioTrack.ts +0 -113
- package/src/middlewares/visitors/visitInboundVideoTrack.ts +0 -117
- package/src/middlewares/visitors/visitOutboundAudioTrack.ts +0 -100
- package/src/middlewares/visitors/visitOutboundVideoTarck.ts +0 -102
- package/src/middlewares/visitors/visitPeerConnection.ts +0 -151
- package/src/middlewares/visitors/visitSfu.ts +0 -70
- package/src/middlewares/visitors/visitSfuInboundRtpPad.ts +0 -52
- package/src/middlewares/visitors/visitSfuOutboundRtpPad.ts +0 -53
- package/src/middlewares/visitors/visitSfuSctpChannel.ts +0 -50
- package/src/middlewares/visitors/visitSfuTransport.ts +0 -50
- package/src/processes/closePeerConnectionProcess.ts +0 -54
- package/src/processes/detachClientProcess.ts +0 -136
- package/src/processes/findRemoteMatches.ts +0 -104
- package/src/processes/inboundTrackRemoved.ts +0 -22
- package/src/processes/joinClientProcess.ts +0 -138
- package/src/processes/outboundTrackRemoved.ts +0 -22
- package/src/samples/ObservedCall.ts +0 -49
- package/src/samples/ObservedCalls.ts +0 -143
- package/src/samples/ObservedClient.ts +0 -172
- package/src/samples/ObservedInboundAudioTrack.ts +0 -35
- package/src/samples/ObservedInboundVideoTrack.ts +0 -36
- package/src/samples/ObservedOutboundAudioTrack.ts +0 -35
- package/src/samples/ObservedOutboundVideoTrack.ts +0 -35
- package/src/samples/ObservedPeerConnection.ts +0 -227
- package/src/samples/ObservedSfu.ts +0 -115
- package/src/samples/ObservedSfuInboundRtpPad.ts +0 -35
- package/src/samples/ObservedSfuOutboundRtpPad.ts +0 -35
- package/src/samples/ObservedSfuSctpChannel.ts +0 -35
- package/src/samples/ObservedSfuTransport.ts +0 -142
- package/src/samples/ObservedSfus.ts +0 -95
- package/src/sources/ObservedCallSource.ts +0 -26
- package/src/sources/ObservedClientSource.ts +0 -28
- package/src/sources/ObservedSfuSource.ts +0 -19
- package/src/sources/Sources.ts +0 -294
- /package/lib/{sinks → common}/callEventReports.d.ts +0 -0
- /package/lib/{sinks → common}/callEventReports.js +0 -0
- /package/src/{sinks → common}/callEventReports.ts +0 -0
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { EvaluatorContext } from '../common/types';
|
|
2
|
-
import { StorageProvider } from '../storages/StorageProvider';
|
|
3
|
-
import * as Models from '../models/Models';
|
|
4
|
-
import { createCallEndedEventReport, createClientLeftEventReport } from '../sinks/callEventReports';
|
|
5
|
-
import { ReportsCollector } from '../common/ReportsCollector';
|
|
6
|
-
import { createClosePeerConnectionProcess, ClosePeerConnectionProcessInput } from './closePeerConnectionProcess';
|
|
7
|
-
import { createLogger } from '../common/logger';
|
|
8
|
-
import { ObservedClientSourceConfig } from '../sources/ObservedClientSource';
|
|
9
|
-
import { Writable } from '../common/utils';
|
|
10
|
-
|
|
11
|
-
const logger = createLogger('ClientLeftProcess');
|
|
12
|
-
|
|
13
|
-
export type DetachClientProcessInput = {
|
|
14
|
-
clients: (ObservedClientSourceConfig & {
|
|
15
|
-
detached: number;
|
|
16
|
-
})[];
|
|
17
|
-
recursive: boolean;
|
|
18
|
-
|
|
19
|
-
evaluatorContext?: Writable<EvaluatorContext>;
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
export function createDetachClientProcess(
|
|
23
|
-
storageProvider: StorageProvider,
|
|
24
|
-
reports: ReportsCollector
|
|
25
|
-
): (input: DetachClientProcessInput) => Promise<void> {
|
|
26
|
-
const peerConnectionClosedProcess = createClosePeerConnectionProcess(storageProvider);
|
|
27
|
-
const process = async (context: DetachClientProcessInput) => {
|
|
28
|
-
const { clients: detachedClients, recursive, evaluatorContext } = context;
|
|
29
|
-
const { callStorage, clientStorage } = storageProvider;
|
|
30
|
-
|
|
31
|
-
const clientIds = detachedClients.map((c) => c.clientId);
|
|
32
|
-
|
|
33
|
-
if (clientIds.length < 1) return;
|
|
34
|
-
|
|
35
|
-
const clients = await clientStorage.getAll(clientIds);
|
|
36
|
-
const callToClientIds = new Map<string, string[]>();
|
|
37
|
-
|
|
38
|
-
for (const client of clients.values()) {
|
|
39
|
-
const { callId, clientId } = client;
|
|
40
|
-
|
|
41
|
-
if (!callId || !clientId) {
|
|
42
|
-
continue;
|
|
43
|
-
}
|
|
44
|
-
callToClientIds.set(callId, [ ...(callToClientIds.get(callId) ?? []), clientId ]);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const peerConnectionCloseProcessInput: ClosePeerConnectionProcessInput = {
|
|
48
|
-
closedPeerConnections: [],
|
|
49
|
-
recursive,
|
|
50
|
-
};
|
|
51
|
-
const callDetaches = new Map<string, number>();
|
|
52
|
-
|
|
53
|
-
await clientStorage.removeAll(clientIds).then((deletedClientIds) => {
|
|
54
|
-
for (const { clientId, detached } of detachedClients) {
|
|
55
|
-
if (!deletedClientIds.has(clientId)) {
|
|
56
|
-
continue;
|
|
57
|
-
}
|
|
58
|
-
const deletedClient = clients.get(clientId);
|
|
59
|
-
|
|
60
|
-
if (!deletedClient) {
|
|
61
|
-
continue;
|
|
62
|
-
}
|
|
63
|
-
const { roomId, serviceId, mediaUnitId, marker, callId, userId } = deletedClient;
|
|
64
|
-
|
|
65
|
-
if (!roomId || !serviceId || !mediaUnitId || !callId) {
|
|
66
|
-
continue;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
for (const peerConnectionId of deletedClient.peerConnectionIds) {
|
|
70
|
-
peerConnectionCloseProcessInput.closedPeerConnections.push({
|
|
71
|
-
peerConnectionId,
|
|
72
|
-
closed: detached,
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
reports.addCallEventReport(
|
|
77
|
-
createClientLeftEventReport(serviceId, mediaUnitId, roomId, callId, clientId, detached, userId, marker)
|
|
78
|
-
);
|
|
79
|
-
evaluatorContext?.detachedClients.push({
|
|
80
|
-
...deletedClient,
|
|
81
|
-
detached: Number(detached),
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
callDetaches.set(callId, Math.max(callDetaches.get(callId) ?? 0, detached));
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
if (recursive && 0 < peerConnectionCloseProcessInput.closedPeerConnections.length) {
|
|
88
|
-
await peerConnectionClosedProcess(peerConnectionCloseProcessInput).catch((err) => {
|
|
89
|
-
logger.error('Error occurred while closing peer connections', err);
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
const calls = await callStorage.getAll(callToClientIds.keys());
|
|
94
|
-
const updatedCalls = new Map<string, Models.Call>();
|
|
95
|
-
const removedCallIds: string[] = [];
|
|
96
|
-
|
|
97
|
-
for (const call of calls.values()) {
|
|
98
|
-
const { callId, serviceId, roomId } = call;
|
|
99
|
-
|
|
100
|
-
if (!callId || !roomId || !serviceId) continue;
|
|
101
|
-
|
|
102
|
-
const removedClientIds = callToClientIds.get(callId) ?? [];
|
|
103
|
-
|
|
104
|
-
call.clientIds = call.clientIds.filter((clientId) => !removedClientIds.includes(clientId));
|
|
105
|
-
if (call.clientIds.length < 1) {
|
|
106
|
-
removedCallIds.push(callId);
|
|
107
|
-
} else {
|
|
108
|
-
updatedCalls.set(callId, call);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
if (0 < updatedCalls.size) {
|
|
112
|
-
await callStorage.setAll(updatedCalls);
|
|
113
|
-
}
|
|
114
|
-
if (0 < removedCallIds.length) {
|
|
115
|
-
await callStorage.removeAll(removedCallIds).then((deletedCalls) => {
|
|
116
|
-
for (const [ callId, deletedCall ] of deletedCalls) {
|
|
117
|
-
const { serviceId, roomId } = deletedCall;
|
|
118
|
-
|
|
119
|
-
if (!serviceId || !roomId || !callId) continue;
|
|
120
|
-
|
|
121
|
-
const ended = callDetaches.get(callId) ?? Date.now();
|
|
122
|
-
const callEvent = createCallEndedEventReport(serviceId, roomId, callId, ended);
|
|
123
|
-
|
|
124
|
-
reports.addCallEventReport(callEvent);
|
|
125
|
-
|
|
126
|
-
evaluatorContext?.endedCalls.push({
|
|
127
|
-
...deletedCall,
|
|
128
|
-
ended,
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
return process;
|
|
136
|
-
}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { createLogger } from '../common/logger';
|
|
2
|
-
import { Client, InboundTrack, OutboundTrack, PeerConnection } from '../models/Models';
|
|
3
|
-
import { StorageProvider } from '../storages/StorageProvider';
|
|
4
|
-
|
|
5
|
-
export const logger = createLogger('findRemoteMatches');
|
|
6
|
-
|
|
7
|
-
function groupToMap<T>(input: ReadonlyMap<string, T>, getGroupKey: (value: T) => string | undefined) {
|
|
8
|
-
const result = new Map<string, T[]>();
|
|
9
|
-
|
|
10
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
11
|
-
for (const [ key, value ] of input.entries()) {
|
|
12
|
-
const groupKey = getGroupKey(value);
|
|
13
|
-
|
|
14
|
-
if (!groupKey) continue;
|
|
15
|
-
|
|
16
|
-
let group = result.get(groupKey);
|
|
17
|
-
|
|
18
|
-
if (group === undefined) {
|
|
19
|
-
group = [];
|
|
20
|
-
result.set(groupKey, group);
|
|
21
|
-
}
|
|
22
|
-
group.push(value);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
return result;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export async function findRemoteMatches(
|
|
29
|
-
storages: StorageProvider,
|
|
30
|
-
clients: ReadonlyMap<string, Client>,
|
|
31
|
-
inboundTracks: ReadonlyMap<string, InboundTrack>,
|
|
32
|
-
) {
|
|
33
|
-
const NOT_EXISTS = 'NotExists';
|
|
34
|
-
const remoteTrackIds = new Map<string, string>();
|
|
35
|
-
const remotePeerConnectionIds = new Map<string, string>();
|
|
36
|
-
const remoteClientIds = new Map<string, string>();
|
|
37
|
-
|
|
38
|
-
async function setupMatches(callId: string, callClients: Client[], callIboundTracks: InboundTrack[]) {
|
|
39
|
-
const peerConnectionIds = Array.from(callClients.values()).flatMap((client) => client.peerConnectionIds);
|
|
40
|
-
const peerConnections = await storages.peerConnectionStorage.getAll(peerConnectionIds).catch((err) => {
|
|
41
|
-
logger.warn(`Error while fetching for remote matching peer connections for call ${callId} `, err);
|
|
42
|
-
|
|
43
|
-
return new Map<string, PeerConnection>() as ReadonlyMap<string, PeerConnection>;
|
|
44
|
-
});
|
|
45
|
-
const outboundTrackIds = Array.from(peerConnections.values()).flatMap((pc) => pc.outboundTrackIds);
|
|
46
|
-
const outboundTracks = await storages.outboundTrackStorage.getAll(outboundTrackIds).catch((err) => {
|
|
47
|
-
logger.warn(`Error while fetching for remote matching outbound tracks for call ${callId} `, err);
|
|
48
|
-
|
|
49
|
-
return new Map<string, OutboundTrack>() as ReadonlyMap<string, OutboundTrack>;
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
// console.warn("setupMatches", peerConnectionIds, outboundTrackIds, callsClients, callsInbTracks);
|
|
53
|
-
|
|
54
|
-
const ssrcToOutb = new Map<bigint, OutboundTrack>();
|
|
55
|
-
const sfuStreamToTrackIds = new Map<string, OutboundTrack>();
|
|
56
|
-
|
|
57
|
-
for (const outbTrack of outboundTracks.values()) {
|
|
58
|
-
if (outbTrack.sfuStreamId) {
|
|
59
|
-
sfuStreamToTrackIds.set(outbTrack.sfuStreamId, outbTrack);
|
|
60
|
-
}
|
|
61
|
-
for (const ssrc of outbTrack.ssrc) {
|
|
62
|
-
ssrcToOutb.set(ssrc, outbTrack);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
for (const inbTrack of callIboundTracks) {
|
|
66
|
-
let outbTrack: OutboundTrack | undefined;
|
|
67
|
-
|
|
68
|
-
if (inbTrack.sfuStreamId) {
|
|
69
|
-
outbTrack = sfuStreamToTrackIds.get(inbTrack.sfuStreamId);
|
|
70
|
-
} else {
|
|
71
|
-
outbTrack = inbTrack.ssrc.map((ssrc) => ssrcToOutb.get(ssrc)).find((outb) => outb !== undefined);
|
|
72
|
-
}
|
|
73
|
-
if (outbTrack) {
|
|
74
|
-
remoteTrackIds.set(inbTrack.trackId ?? NOT_EXISTS, outbTrack.trackId ?? NOT_EXISTS);
|
|
75
|
-
remotePeerConnectionIds.set(inbTrack.trackId ?? NOT_EXISTS, outbTrack.peerConnectionId ?? NOT_EXISTS);
|
|
76
|
-
remoteClientIds.set(inbTrack.trackId ?? NOT_EXISTS, outbTrack.clientId ?? NOT_EXISTS);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
const callsClients = groupToMap<Client>(clients, (client) => client.callId);
|
|
81
|
-
const callsInbTracks = groupToMap<InboundTrack>(inboundTracks, (inbTrack) => inbTrack.callId);
|
|
82
|
-
|
|
83
|
-
const promises: Promise<void>[] = [];
|
|
84
|
-
|
|
85
|
-
for (const [ callId, callClients ] of callsClients) {
|
|
86
|
-
const callIboundTracks = callsInbTracks.get(callId) ?? [];
|
|
87
|
-
const promise = setupMatches(
|
|
88
|
-
callId,
|
|
89
|
-
callClients,
|
|
90
|
-
callIboundTracks
|
|
91
|
-
);
|
|
92
|
-
|
|
93
|
-
promises.push(promise);
|
|
94
|
-
}
|
|
95
|
-
await Promise.all(promises).catch((err) => {
|
|
96
|
-
logger.warn('Error occurred while fetching remote pair matches', err);
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
return {
|
|
100
|
-
remoteTrackIds,
|
|
101
|
-
remotePeerConnectionIds,
|
|
102
|
-
remoteClientIds
|
|
103
|
-
};
|
|
104
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { StorageProvider } from '../storages/StorageProvider';
|
|
2
|
-
|
|
3
|
-
export type InboundTrackRemoveProcessInput = {
|
|
4
|
-
removedTracks: {
|
|
5
|
-
trackId: string;
|
|
6
|
-
timestamp?: number;
|
|
7
|
-
}[];
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
export function createInboundTrackRemoveProcess(
|
|
11
|
-
storageProvider: StorageProvider
|
|
12
|
-
): (input: InboundTrackRemoveProcessInput) => Promise<void> {
|
|
13
|
-
const process = async (input: InboundTrackRemoveProcessInput) => {
|
|
14
|
-
const { removedTracks } = input;
|
|
15
|
-
const { inboundTrackStorage } = storageProvider;
|
|
16
|
-
const inboundTrackIds = removedTracks.map((c) => c.trackId);
|
|
17
|
-
|
|
18
|
-
await inboundTrackStorage.removeAll(inboundTrackIds);
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
return process;
|
|
22
|
-
}
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { EvaluatorContext } from '../common/types';
|
|
2
|
-
import { StorageProvider } from '../storages/StorageProvider';
|
|
3
|
-
import * as Models from '../models/Models';
|
|
4
|
-
import { createCallStartedEventReport, createClientJoinedEventReport } from '../sinks/callEventReports';
|
|
5
|
-
import { ReportsCollector } from '../common/ReportsCollector';
|
|
6
|
-
import { createLogger } from '../common/logger';
|
|
7
|
-
import { ObservedClientSourceConfig } from '../sources/ObservedClientSource';
|
|
8
|
-
import { Writable } from '../common/utils';
|
|
9
|
-
|
|
10
|
-
const logger = createLogger('ClientLeftProcess');
|
|
11
|
-
|
|
12
|
-
export type JoinClientProcessInput = {
|
|
13
|
-
clients: ObservedClientSourceConfig[];
|
|
14
|
-
|
|
15
|
-
evaluatorContext?: Writable<EvaluatorContext>;
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
export function createJoinClientProcess(
|
|
19
|
-
storageProvider: StorageProvider,
|
|
20
|
-
reports: ReportsCollector
|
|
21
|
-
): (input: JoinClientProcessInput) => Promise<void> {
|
|
22
|
-
const process = async (context: JoinClientProcessInput) => {
|
|
23
|
-
const { clients: joinedClients, evaluatorContext } = context;
|
|
24
|
-
|
|
25
|
-
if (joinedClients.length < 1) {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
const { callStorage, clientStorage } = storageProvider;
|
|
29
|
-
|
|
30
|
-
const callIds = joinedClients.map((c) => c.callId);
|
|
31
|
-
const existingCalls = await callStorage.getAll(callIds);
|
|
32
|
-
const newCalls = new Map<string, Models.Call>();
|
|
33
|
-
const newClients = new Map<string, Models.Client>();
|
|
34
|
-
|
|
35
|
-
for (const joinedClient of joinedClients) {
|
|
36
|
-
const { serviceId, mediaUnitId, roomId, callId, clientId, userId, joined: timestamp, timeZoneId, marker } = joinedClient;
|
|
37
|
-
|
|
38
|
-
let call = existingCalls.get(callId);
|
|
39
|
-
|
|
40
|
-
if (!call) {
|
|
41
|
-
call = new Models.Call({
|
|
42
|
-
serviceId,
|
|
43
|
-
roomId,
|
|
44
|
-
callId,
|
|
45
|
-
started: BigInt(timestamp),
|
|
46
|
-
});
|
|
47
|
-
newCalls.set(callId, call);
|
|
48
|
-
}
|
|
49
|
-
if (call.clientIds.find((callClientId) => callClientId === clientId)) {
|
|
50
|
-
logger.warn(`Call ${callId} for room ${roomId} attempted to add client ${clientId} twice`);
|
|
51
|
-
continue;
|
|
52
|
-
}
|
|
53
|
-
call.clientIds.push(clientId);
|
|
54
|
-
|
|
55
|
-
// we can extract the lowest timestamp here
|
|
56
|
-
// const joinedTimestamp
|
|
57
|
-
// for (const observedCall of (evaluatorContext?.observedCalls.getObservedCall(callId)?.getObservedClient(clientId)?.samples() ?? [])) {
|
|
58
|
-
|
|
59
|
-
// }
|
|
60
|
-
newClients.set(
|
|
61
|
-
clientId,
|
|
62
|
-
new Models.Client({
|
|
63
|
-
serviceId,
|
|
64
|
-
mediaUnitId,
|
|
65
|
-
roomId,
|
|
66
|
-
callId,
|
|
67
|
-
clientId,
|
|
68
|
-
joined: BigInt(timestamp),
|
|
69
|
-
timeZoneId,
|
|
70
|
-
marker,
|
|
71
|
-
userId,
|
|
72
|
-
})
|
|
73
|
-
);
|
|
74
|
-
}
|
|
75
|
-
const alreadyInsertedCalls =
|
|
76
|
-
0 < newCalls.size ? await callStorage.insertAll(newCalls) : new Map<string, Models.Call>();
|
|
77
|
-
|
|
78
|
-
for (const [ callId, newCall ] of newCalls) {
|
|
79
|
-
if (alreadyInsertedCalls.has(callId)) {
|
|
80
|
-
continue;
|
|
81
|
-
}
|
|
82
|
-
const { serviceId, roomId, started } = newCall;
|
|
83
|
-
|
|
84
|
-
if (!serviceId || !roomId || !started) {
|
|
85
|
-
continue;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
const callEvent = createCallStartedEventReport(serviceId, roomId, callId, Number(started));
|
|
89
|
-
|
|
90
|
-
// if ((evaluatorContext?.observedCalls as ObservedCalls).getObservedCall(callId)) {
|
|
91
|
-
// reports.addCallEventReport(callEvent);
|
|
92
|
-
// }
|
|
93
|
-
reports.addCallEventReport(callEvent);
|
|
94
|
-
evaluatorContext?.startedCallIds.push(callId);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
if (0 < existingCalls.size) {
|
|
98
|
-
await callStorage.setAll(existingCalls);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
if (0 < newClients.size) {
|
|
102
|
-
await clientStorage.setAll(newClients);
|
|
103
|
-
}
|
|
104
|
-
for (const [ clientId, client ] of newClients) {
|
|
105
|
-
const {
|
|
106
|
-
serviceId,
|
|
107
|
-
mediaUnitId,
|
|
108
|
-
roomId,
|
|
109
|
-
callId,
|
|
110
|
-
clientId: savedClientId,
|
|
111
|
-
userId,
|
|
112
|
-
// timeZoneId,
|
|
113
|
-
marker,
|
|
114
|
-
joined,
|
|
115
|
-
} = client;
|
|
116
|
-
|
|
117
|
-
if (!serviceId || !mediaUnitId || !roomId || !callId || !savedClientId) {
|
|
118
|
-
continue;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
const callEvent = createClientJoinedEventReport(
|
|
122
|
-
serviceId,
|
|
123
|
-
mediaUnitId,
|
|
124
|
-
roomId,
|
|
125
|
-
callId,
|
|
126
|
-
clientId,
|
|
127
|
-
Number(joined),
|
|
128
|
-
userId,
|
|
129
|
-
marker
|
|
130
|
-
);
|
|
131
|
-
|
|
132
|
-
reports.addCallEventReport(callEvent);
|
|
133
|
-
evaluatorContext?.joinedClientIds.push(clientId);
|
|
134
|
-
}
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
return process;
|
|
138
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { StorageProvider } from '../storages/StorageProvider';
|
|
2
|
-
|
|
3
|
-
export type OutboundTrackRemoveProcessInput = {
|
|
4
|
-
removedTracks: {
|
|
5
|
-
trackId: string;
|
|
6
|
-
timestamp?: number;
|
|
7
|
-
}[];
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
export function createOutboundTrackRemoveProcess(
|
|
11
|
-
storageProvider: StorageProvider
|
|
12
|
-
): (input: OutboundTrackRemoveProcessInput) => Promise<void> {
|
|
13
|
-
const process = async (input: OutboundTrackRemoveProcessInput) => {
|
|
14
|
-
const { removedTracks } = input;
|
|
15
|
-
const { outboundTrackStorage } = storageProvider;
|
|
16
|
-
const outboundTrackIds = removedTracks.map((c) => c.trackId);
|
|
17
|
-
|
|
18
|
-
await outboundTrackStorage.removeAll(outboundTrackIds);
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
return process;
|
|
22
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { ObservedClient, ObservedClientBuilder } from './ObservedClient';
|
|
2
|
-
|
|
3
|
-
export interface ObservedCall {
|
|
4
|
-
readonly serviceId: string;
|
|
5
|
-
readonly roomId: string;
|
|
6
|
-
readonly callId: string;
|
|
7
|
-
readonly createCallStartedReport?: boolean;
|
|
8
|
-
observedClients(): IterableIterator<ObservedClient>;
|
|
9
|
-
getObservedClient(clientId: string): ObservedClient | undefined;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export class ObservedCallBuilder {
|
|
13
|
-
private _observedClientBuilders = new Map<string, ObservedClientBuilder>();
|
|
14
|
-
public constructor(private _config: Omit<ObservedCall, 'observedClients' | 'getObservedClient'>) {}
|
|
15
|
-
|
|
16
|
-
public getOrCreateObservedClientBuilder(
|
|
17
|
-
clientId: string,
|
|
18
|
-
configSupplier: () => ConstructorParameters<typeof ObservedClientBuilder>[0]
|
|
19
|
-
) {
|
|
20
|
-
let result = this._observedClientBuilders.get(clientId);
|
|
21
|
-
|
|
22
|
-
if (!result) {
|
|
23
|
-
const config = configSupplier();
|
|
24
|
-
|
|
25
|
-
result = new ObservedClientBuilder(config);
|
|
26
|
-
this._observedClientBuilders.set(clientId, result);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
return result;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
public build(): ObservedCall {
|
|
33
|
-
const observedClients = new Map<string, ObservedClient>();
|
|
34
|
-
|
|
35
|
-
const observedCall: ObservedCall = {
|
|
36
|
-
...this._config,
|
|
37
|
-
observedClients: () => observedClients.values(),
|
|
38
|
-
getObservedClient: (clientId) => observedClients.get(clientId),
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
for (const observedClientBuilder of this._observedClientBuilders.values()) {
|
|
42
|
-
const observedClient = observedClientBuilder.build(observedCall);
|
|
43
|
-
|
|
44
|
-
observedClients.set(observedClient.clientId, observedClient);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return observedCall;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import { iteratorConverter } from '../common/utils';
|
|
2
|
-
import { ObservedCall, ObservedCallBuilder } from './ObservedCall';
|
|
3
|
-
|
|
4
|
-
export interface ObservedCalls {
|
|
5
|
-
callIds(): IterableIterator<string>;
|
|
6
|
-
clientIds(): IterableIterator<string>;
|
|
7
|
-
peerConnectionIds(): IterableIterator<string>;
|
|
8
|
-
inboundAudioTrackIds(): IterableIterator<string>;
|
|
9
|
-
inboundVideoTrackIds(): IterableIterator<string>;
|
|
10
|
-
outboundAudioTrackIds(): IterableIterator<string>;
|
|
11
|
-
outboundVideoTrackIds(): IterableIterator<string>;
|
|
12
|
-
|
|
13
|
-
observedCalls(): IterableIterator<ObservedCall>;
|
|
14
|
-
getObservedCall(callId: string): ObservedCall | undefined;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export class ObservedCallsBuilder {
|
|
18
|
-
private _builders = new Map<string, ObservedCallBuilder>();
|
|
19
|
-
public constructor() {
|
|
20
|
-
// nothing
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
public getOrCreateObservedCallBuilder(
|
|
24
|
-
callId: string,
|
|
25
|
-
configSupplier: () => ConstructorParameters<typeof ObservedCallBuilder>[0]
|
|
26
|
-
) {
|
|
27
|
-
let result = this._builders.get(callId);
|
|
28
|
-
|
|
29
|
-
if (!result) {
|
|
30
|
-
const config = configSupplier();
|
|
31
|
-
|
|
32
|
-
result = new ObservedCallBuilder(config);
|
|
33
|
-
this._builders.set(callId, result);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
return result;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
public build(): ObservedCalls {
|
|
40
|
-
const observedCalls = new Map<string, ObservedCall>();
|
|
41
|
-
|
|
42
|
-
const callIdsGenerator = function *() {
|
|
43
|
-
for (const observedCall of observedCalls.values()) {
|
|
44
|
-
yield observedCall.callId;
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
const callIds = () => iteratorConverter<string>(callIdsGenerator());
|
|
48
|
-
|
|
49
|
-
const clientIdsGenerator = function *() {
|
|
50
|
-
for (const observedCall of observedCalls.values()) {
|
|
51
|
-
for (const observedClient of observedCall.observedClients()) {
|
|
52
|
-
yield observedClient.clientId;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
const clientIds = () => iteratorConverter<string>(clientIdsGenerator());
|
|
57
|
-
|
|
58
|
-
const peerConnectionIdsGenerator = function *() {
|
|
59
|
-
for (const observedCall of observedCalls.values()) {
|
|
60
|
-
for (const observedClient of observedCall.observedClients()) {
|
|
61
|
-
for (const observedPeerConnection of observedClient.observedPeerConnections()) {
|
|
62
|
-
yield observedPeerConnection.peerConnectionId;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
const peerConnectionIds = () => iteratorConverter<string>(peerConnectionIdsGenerator());
|
|
68
|
-
|
|
69
|
-
const inboundAudioTrackIdsGenerator = function *() {
|
|
70
|
-
for (const observedCall of observedCalls.values()) {
|
|
71
|
-
for (const observedClient of observedCall.observedClients()) {
|
|
72
|
-
for (const observedPeerConnection of observedClient.observedPeerConnections()) {
|
|
73
|
-
for (const inboundAudioTrack of observedPeerConnection.inboundAudioTracks()) {
|
|
74
|
-
yield inboundAudioTrack.trackId;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
const inboundAudioTrackIds = () => iteratorConverter<string>(inboundAudioTrackIdsGenerator());
|
|
81
|
-
|
|
82
|
-
const inboundVideoTrackIdsGenerator = function *() {
|
|
83
|
-
for (const observedCall of observedCalls.values()) {
|
|
84
|
-
for (const observedClient of observedCall.observedClients()) {
|
|
85
|
-
for (const observedPeerConnection of observedClient.observedPeerConnections()) {
|
|
86
|
-
for (const inboundVideoTrack of observedPeerConnection.inboundVideoTracks()) {
|
|
87
|
-
yield inboundVideoTrack.trackId;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
const inboundVideoTrackIds = () => iteratorConverter<string>(inboundVideoTrackIdsGenerator());
|
|
94
|
-
|
|
95
|
-
const outboundAudioTrackIdsGenerator = function *() {
|
|
96
|
-
for (const observedCall of observedCalls.values()) {
|
|
97
|
-
for (const observedClient of observedCall.observedClients()) {
|
|
98
|
-
for (const observedPeerConnection of observedClient.observedPeerConnections()) {
|
|
99
|
-
for (const outboundAudioTrack of observedPeerConnection.outboundAudioTracks()) {
|
|
100
|
-
yield outboundAudioTrack.trackId;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
|
-
const outboundAudioTrackIds = () => iteratorConverter<string>(outboundAudioTrackIdsGenerator());
|
|
107
|
-
|
|
108
|
-
const outboundVideoTrackIdsGenerator = function *() {
|
|
109
|
-
for (const observedCall of observedCalls.values()) {
|
|
110
|
-
for (const observedClient of observedCall.observedClients()) {
|
|
111
|
-
for (const observedPeerConnection of observedClient.observedPeerConnections()) {
|
|
112
|
-
for (const outboundVideoTrack of observedPeerConnection.outboundVideoTracks()) {
|
|
113
|
-
yield outboundVideoTrack.trackId;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
const outboundVideoTrackIds = () => iteratorConverter<string>(outboundVideoTrackIdsGenerator());
|
|
120
|
-
|
|
121
|
-
const result: ObservedCalls = {
|
|
122
|
-
callIds,
|
|
123
|
-
clientIds,
|
|
124
|
-
peerConnectionIds,
|
|
125
|
-
inboundAudioTrackIds,
|
|
126
|
-
inboundVideoTrackIds,
|
|
127
|
-
outboundAudioTrackIds,
|
|
128
|
-
outboundVideoTrackIds,
|
|
129
|
-
observedCalls: () => observedCalls.values(),
|
|
130
|
-
getObservedCall: (callId) => observedCalls.get(callId),
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
for (const builder of this._builders.values()) {
|
|
134
|
-
const observedCall = builder.build();
|
|
135
|
-
|
|
136
|
-
observedCalls.set(observedCall.callId, observedCall);
|
|
137
|
-
}
|
|
138
|
-
this._builders.clear();
|
|
139
|
-
|
|
140
|
-
return result;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
}
|