| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | 
							- /**
 -  * local stats
 -  * @type {{}}
 -  */
 - var stats = {};
 - 
 - /**
 -  * remote stats
 -  * @type {{}}
 -  */
 - var remoteStats = {};
 - 
 - /**
 -  * Interval for sending statistics to other participants
 -  * @type {null}
 -  */
 - var sendIntervalId = null;
 - 
 - 
 - /**
 -  * Start statistics sending.
 -  */
 - function startSendingStats() {
 -     sendStats();
 -     sendIntervalId = setInterval(sendStats, 10000);
 - }
 - 
 - /**
 -  * Sends statistics to other participants
 -  */
 - function sendStats() {
 -     xmpp.addToPresence("connectionQuality", convertToMUCStats(stats));
 - }
 - 
 - /**
 -  * Converts statistics to format for sending through XMPP
 -  * @param stats the statistics
 -  * @returns {{bitrate_donwload: *, bitrate_uplpoad: *, packetLoss_total: *, packetLoss_download: *, packetLoss_upload: *}}
 -  */
 - function convertToMUCStats(stats) {
 -     return {
 -         "bitrate_download": stats.bitrate.download,
 -         "bitrate_upload": stats.bitrate.upload,
 -         "packetLoss_total": stats.packetLoss.total,
 -         "packetLoss_download": stats.packetLoss.download,
 -         "packetLoss_upload": stats.packetLoss.upload
 -     };
 - }
 - 
 - /**
 -  * Converts statitistics to format used by VideoLayout
 -  * @param stats
 -  * @returns {{bitrate: {download: *, upload: *}, packetLoss: {total: *, download: *, upload: *}}}
 -  */
 - function parseMUCStats(stats) {
 -     return {
 -         bitrate: {
 -             download: stats.bitrate_download,
 -             upload: stats.bitrate_upload
 -         },
 -         packetLoss: {
 -             total: stats.packetLoss_total,
 -             download: stats.packetLoss_download,
 -             upload: stats.packetLoss_upload
 -         }
 -     };
 - }
 - 
 - 
 - var ConnectionQuality = {
 -     /**
 -      * Updates the local statistics
 -      * @param data new statistics
 -      */
 -     updateLocalStats: function (data) {
 -         stats = data;
 -         UI.updateLocalConnectionStats(100 - stats.packetLoss.total, stats);
 -         if (sendIntervalId == null) {
 -             startSendingStats();
 -         }
 -     },
 - 
 -     /**
 -      * Updates remote statistics
 -      * @param jid the jid associated with the statistics
 -      * @param data the statistics
 -      */
 -     updateRemoteStats: function (jid, data) {
 -         if (data == null || data.packetLoss_total == null) {
 -             UI.updateConnectionStats(jid, null, null);
 -             return;
 -         }
 -         remoteStats[jid] = parseMUCStats(data);
 - 
 -         UI.updateConnectionStats(jid, 100 - data.packetLoss_total, remoteStats[jid]);
 - 
 -     },
 - 
 -     /**
 -      * Stops statistics sending.
 -      */
 -     stopSendingStats: function () {
 -         clearInterval(sendIntervalId);
 -         sendIntervalId = null;
 -         //notify UI about stopping statistics gathering
 -         UI.onStatsStop();
 -     },
 - 
 -     /**
 -      * Returns the local statistics.
 -      */
 -     getStats: function () {
 -         return stats;
 -     }
 - 
 - };
 - 
 - module.exports = ConnectionQuality;
 
 
  |