@observertc/client-monitor-js
Version:
ObserveRTC Client Integration Javascript Library
1 lines • 1.35 kB
JavaScript
import*as t from"../schema/W3cStatsIdentifiers";export class FirefoxTransportStatsAdapter{name="FirefoxTransportStatsAdapter";_selectedCandidatePair;stats={type:"transport",timestamp:0,id:"",packetsSent:0,packetsReceived:0,bytesSent:0,bytesReceived:0,selectedCandidatePairId:void 0,selectedCandidatePairChanges:-1};constructor(){}adapt(e){let s,a=!1;for(const i of e){if(i.type===t.StatsType.transport){a=!0;break}if(i.type!==t.StatsType.candidatePair)continue;const e=i;if(e.selected){s=e;break}}if(a||!s)return e;if(this._selectedCandidatePair?.id!==s.id)this.stats.selectedCandidatePairChanges=(this.stats.selectedCandidatePairChanges??0)+1,this.stats.selectedCandidatePairId=s.id,this.stats.id=s.transportId??"transport_0";else{const t=(s.packetsReceived??0)-(this._selectedCandidatePair.packetsReceived??0),e=(s.packetsSent??0)-(this._selectedCandidatePair.packetsSent??0),a=(s.bytesReceived??0)-(this._selectedCandidatePair.bytesReceived??0),i=(s.bytesSent??0)-(this._selectedCandidatePair.bytesSent??0);0<a&&(this.stats.bytesReceived=(this.stats.bytesReceived??0)+a),0<i&&(this.stats.bytesSent=(this.stats.bytesSent??0)+i),0<t&&(this.stats.packetsReceived=(this.stats.packetsReceived??0)+t),0<e&&(this.stats.packetsSent=(this.stats.packetsSent??0)+e)}return this._selectedCandidatePair=s,this.stats.timestamp=s.timestamp,e.push(this.stats),e}}