UNPKG

@observertc/observer-js

Version:

Server Side NodeJS Library for processing ObserveRTC Samples

100 lines (84 loc) 3.32 kB
import { ObservedPeerConnection } from './ObservedPeerConnection'; import { IceTransportStats } from './schema/ClientSample'; export class ObservedIceTransport implements IceTransportStats { private _visited = false; public appData?: Record<string, unknown>; packetsSent?: number | undefined; packetsReceived?: number | undefined; bytesSent?: number | undefined; bytesReceived?: number | undefined; iceRole?: string | undefined; iceLocalUsernameFragment?: string | undefined; dtlsState?: string | undefined; iceState?: string | undefined; selectedCandidatePairId?: string | undefined; localCertificateId?: string | undefined; remoteCertificateId?: string | undefined; tlsVersion?: string | undefined; dtlsCipher?: string | undefined; dtlsRole?: string | undefined; srtpCipher?: string | undefined; selectedCandidatePairChanges?: number | undefined; attachments?: Record<string, unknown> | undefined; public deltaPacketsReceived = 0; public deltaPacketsSent = 0; public deltaBytesReceived = 0; public deltaBytesSent = 0; public constructor( public timestamp: number, public id: string, private readonly _peerConnection: ObservedPeerConnection ) {} public get visited() { const visited = this._visited; this._visited = false; return visited; } public getPeerConnection() { return this._peerConnection; } public getSelectedCandidatePair() { return this._peerConnection.observedIceCandidatesPair.get(this.selectedCandidatePairId ?? ''); } public update(stats: IceTransportStats) { this._visited = true; if (this.bytesReceived !== undefined && stats.bytesReceived !== undefined && this.bytesReceived <= stats.bytesReceived) { this.deltaBytesReceived = stats.bytesReceived - this.bytesReceived; } else { this.deltaBytesReceived = 0; } if (this.bytesSent !== undefined && stats.bytesSent !== undefined && this.bytesSent <= stats.bytesSent) { this.deltaBytesSent = stats.bytesSent - this.bytesSent; } else { this.deltaBytesSent = 0; } if (this.packetsReceived !== undefined && stats.packetsReceived !== undefined && this.packetsReceived <= stats.packetsReceived) { this.deltaPacketsReceived = stats.packetsReceived - this.packetsReceived; } else { this.deltaPacketsReceived = 0; } if (this.packetsSent !== undefined && stats.packetsSent !== undefined && this.packetsSent <= stats.packetsSent) { this.deltaPacketsSent = stats.packetsSent - this.packetsSent; } else { this.deltaPacketsSent = 0; } this.timestamp = stats.timestamp; this.packetsSent = stats.packetsSent; this.packetsReceived = stats.packetsReceived; this.bytesSent = stats.bytesSent; this.bytesReceived = stats.bytesReceived; this.iceRole = stats.iceRole; this.iceLocalUsernameFragment = stats.iceLocalUsernameFragment; this.dtlsState = stats.dtlsState; this.iceState = stats.iceState; this.selectedCandidatePairId = stats.selectedCandidatePairId; this.localCertificateId = stats.localCertificateId; this.remoteCertificateId = stats.remoteCertificateId; this.tlsVersion = stats.tlsVersion; this.dtlsCipher = stats.dtlsCipher; this.dtlsRole = stats.dtlsRole; this.srtpCipher = stats.srtpCipher; this.selectedCandidatePairChanges = stats.selectedCandidatePairChanges; this.attachments = stats.attachments; } }