jiti-meet/modules/statistics/statistics.js

138 lines
3.0 KiB
JavaScript
Raw Normal View History

2014-12-17 16:21:25 +00:00
/**
* Created by hristo on 8/4/14.
*/
var LocalStats = require("./LocalStatsCollector.js");
var RTPStats = require("./RTPStatsCollector.js");
var EventEmitter = require("events");
2014-12-19 13:59:08 +00:00
//These lines should be uncommented when require works in app.js
//var StreamEventTypes = require("../../service/RTC/StreamEventTypes.js");
//var RTCBrowserType = require("../../service/RTC/RTCBrowserType");
2014-12-17 16:21:25 +00:00
//var XMPPEvents = require("../service/xmpp/XMPPEvents");
var eventEmitter = new EventEmitter();
var localStats = null;
var rtpStats = null;
function stopLocal()
{
if(localStats)
{
localStats.stop();
localStats = null;
}
}
function stopRemote()
{
if(rtpStats)
{
rtpStats.stop();
eventEmitter.emit("statistics.stop");
rtpStats = null;
}
}
function startRemoteStats (peerconnection) {
if (config.enableRtpStats)
{
if(rtpStats)
{
rtpStats.stop();
rtpStats = null;
}
rtpStats = new RTPStats(peerconnection, 200, 2000, eventEmitter);
rtpStats.start();
}
}
2014-12-19 13:59:08 +00:00
function onStreamCreated(stream)
{
2015-01-07 14:54:03 +00:00
if(stream.getOriginalStream().getAudioTracks().length === 0)
2014-12-19 13:59:08 +00:00
return;
2015-01-07 14:54:03 +00:00
localStats = new LocalStats(stream.getOriginalStream(), 100, statistics,
2014-12-19 13:59:08 +00:00
eventEmitter);
localStats.start();
}
function onDisposeConference(onUnload) {
stopRemote();
if(onUnload) {
stopLocal();
eventEmitter.removeAllListeners();
}
}
2014-12-17 16:21:25 +00:00
var statistics =
{
/**
* Indicates that this audio level is for local jid.
* @type {string}
*/
LOCAL_JID: 'local',
addAudioLevelListener: function(listener)
{
eventEmitter.on("statistics.audioLevel", listener);
},
removeAudioLevelListener: function(listener)
{
eventEmitter.removeListener("statistics.audioLevel", listener);
},
addConnectionStatsListener: function(listener)
{
eventEmitter.on("statistics.connectionstats", listener);
},
removeConnectionStatsListener: function(listener)
{
eventEmitter.removeListener("statistics.connectionstats", listener);
},
addRemoteStatsStopListener: function(listener)
{
eventEmitter.on("statistics.stop", listener);
},
removeRemoteStatsStopListener: function(listener)
{
eventEmitter.removeListener("statistics.stop", listener);
},
stop: function () {
stopLocal();
stopRemote();
if(eventEmitter)
{
eventEmitter.removeAllListeners();
}
},
stopRemoteStatistics: function()
{
stopRemote();
},
2014-12-19 13:59:08 +00:00
start: function () {
RTC.addStreamListener(onStreamCreated,
StreamEventTypes.EVENT_TYPE_LOCAL_CREATED);
xmpp.addListener(XMPPEvents.DISPOSE_CONFERENCE, onDisposeConference);
xmpp.addListener(XMPPEvents.CALL_INCOMING, function (event) {
startRemoteStats(event.peerconnection);
});
2014-12-17 16:21:25 +00:00
}
2014-12-19 13:59:08 +00:00
2014-12-17 16:21:25 +00:00
};
module.exports = statistics;