123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- /* global APP, require */
- /* jshint -W101 */
- var EventEmitter = require("events");
- var eventEmitter = new EventEmitter();
- var CQEvents = require("../../service/connectionquality/CQEvents");
- var StatisticsEvents = require("../../service/statistics/Events");
-
- /**
- * local stats
- * @type {{}}
- */
- var stats = {};
-
- /**
- * remote stats
- * @type {{}}
- */
- var remoteStats = {};
-
- /**
- * Converts statistics 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 = {
- init: function () {
- APP.statistics.addListener(
- StatisticsEvents.CONNECTION_STATS, this.updateLocalStats
- );
- APP.statistics.addListener(
- StatisticsEvents.STOP, this.stopSendingStats
- );
- },
-
- /**
- * Updates the local statistics
- * @param data new statistics
- */
- updateLocalStats: function (data) {
- stats = data;
- eventEmitter.emit(CQEvents.LOCALSTATS_UPDATED, 100 - stats.packetLoss.total, stats);
- },
-
- /**
- * Updates remote statistics
- * @param id the id associated with the statistics
- * @param data the statistics
- */
- updateRemoteStats: function (id, data) {
- if (!data || !data.packetLoss_total) {
- eventEmitter.emit(CQEvents.REMOTESTATS_UPDATED, id, null, null);
- return;
- }
- remoteStats[id] = parseMUCStats(data);
-
- eventEmitter.emit(
- CQEvents.REMOTESTATS_UPDATED, id, 100 - data.packetLoss_total, remoteStats[id]
- );
- },
-
- /**
- * Stops statistics sending.
- */
- stopSendingStats: function () {
- //notify UI about stopping statistics gathering
- eventEmitter.emit(CQEvents.STOP);
- },
-
- /**
- * Returns the local statistics.
- */
- getStats: function () {
- return stats;
- },
-
- addListener: function (type, listener) {
- eventEmitter.on(type, listener);
- },
-
- /**
- * Converts statistics to format for sending through XMPP
- * @param stats the statistics
- * @returns {{bitrate_donwload: *, bitrate_uplpoad: *, packetLoss_total: *, packetLoss_download: *, packetLoss_upload: *}}
- */
- convertToMUCStats: function (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
- };
- }
- };
-
- module.exports = ConnectionQuality;
|