UNPKG

@observertc/client-monitor-js

Version:

ObserveRTC Client Integration Javascript Library

1 lines 4.04 kB
import{positiveDelta as e}from"../utils/common";export class IceCandidatePairMonitor{_peerConnection;_visited=!0;id;timestamp;transportId;localCandidateId;remoteCandidateId;state;nominated;packetsSent;packetsReceived;bytesSent;bytesReceived;lastPacketSentTimestamp;lastPacketReceivedTimestamp;totalRoundTripTime;currentRoundTripTime;availableOutgoingBitrate;availableIncomingBitrate;requestsReceived;requestsSent;responsesReceived;responsesSent;consentRequestsSent;packetsDiscardedOnSend;bytesDiscardedOnSend;deltaPacketsSent;deltaPacketsReceived;deltaBytesSent;deltaBytesReceived;deltaTotalRoundTripTime;deltaResponsesReceived;avgRoundTripTimeInSec;attachments;appData;constructor(e,t){this._peerConnection=e,this.id=t.id,this.timestamp=t.timestamp,Object.assign(this,t)}get visited(){const e=this._visited;return this._visited=!1,e}accept(t){this._visited=!0;t.timestamp-this.timestamp<=0||(this.deltaBytesReceived=0,this.deltaBytesSent=0,this.deltaPacketsReceived=0,this.deltaPacketsSent=0,void 0!==this.packetsSent&&void 0!==t.packetsSent&&this.packetsSent<=t.packetsSent&&(this.deltaPacketsSent=t.packetsSent-this.packetsSent),void 0!==this.packetsReceived&&void 0!==t.packetsReceived&&this.packetsReceived<=t.packetsReceived&&(this.deltaPacketsReceived=t.packetsReceived-this.packetsReceived),void 0!==this.bytesSent&&void 0!==t.bytesSent&&this.bytesSent<=t.bytesSent&&(this.deltaBytesSent=t.bytesSent-this.bytesSent),void 0!==this.bytesReceived&&void 0!==t.bytesReceived&&this.bytesReceived<=t.bytesReceived&&(this.deltaBytesReceived=t.bytesReceived-this.bytesReceived),this.deltaTotalRoundTripTime=e(t.totalRoundTripTime,this.totalRoundTripTime),this.deltaResponsesReceived=e(t.responsesReceived,this.responsesReceived),this.avgRoundTripTimeInSec=void 0!==this.deltaTotalRoundTripTime&&void 0!==this.deltaResponsesReceived&&this.deltaResponsesReceived>0?this.deltaTotalRoundTripTime/this.deltaResponsesReceived:void 0,Object.assign(this,t))}getPeerConnection(){return this._peerConnection}getIceTransport(){return this._peerConnection.mappedIceTransportMonitors.get(this.transportId??"")}getLocalCandidate(){return this._peerConnection.mappedIceCandidateMonitors.get(this.localCandidateId??"")}getRemoteCandidate(){return this._peerConnection.mappedIceCandidateMonitors.get(this.remoteCandidateId??"")}get pathKey(){return this.transportId??this.getLocalCandidate()?.transportId??"unknown-ice-transport"}get usingTurn(){return!0===this.getLocalCandidate()?.isRelay}get usingTcp(){return"tcp"===this.getLocalCandidate()?.protocol}get relayProtocol(){return this.getLocalCandidate()?.turnTransport}get turnUrl(){return this.usingTurn?this.getLocalCandidate()?.url:void 0}get turnServer(){return this.getLocalCandidate()?.turnServer}get pathKind(){if(!this.usingTurn)return"direct";switch(this.relayProtocol){case"udp":return"turn-udp";case"tcp":return"turn-tcp";case"tls":return"turn-tls";default:return"turn-unknown"}}get tuple(){const e=this.getLocalCandidate(),t=this.getRemoteCandidate();return`${e?.address}:${e?.port}:${t?.address}:${t?.port}:${e?.protocol}`}createSample(){return{id:this.id,timestamp:this.timestamp,transportId:this.transportId,localCandidateId:this.localCandidateId,remoteCandidateId:this.remoteCandidateId,state:this.state,nominated:this.nominated,packetsSent:this.packetsSent,packetsReceived:this.packetsReceived,bytesSent:this.bytesSent,bytesReceived:this.bytesReceived,lastPacketSentTimestamp:this.lastPacketSentTimestamp,lastPacketReceivedTimestamp:this.lastPacketReceivedTimestamp,totalRoundTripTime:this.totalRoundTripTime,currentRoundTripTime:this.currentRoundTripTime,availableOutgoingBitrate:this.availableOutgoingBitrate,availableIncomingBitrate:this.availableIncomingBitrate,requestsReceived:this.requestsReceived,requestsSent:this.requestsSent,responsesReceived:this.responsesReceived,responsesSent:this.responsesSent,consentRequestsSent:this.consentRequestsSent,packetsDiscardedOnSend:this.packetsDiscardedOnSend,bytesDiscardedOnSend:this.bytesDiscardedOnSend,attachments:this.attachments}}}