jiti-meet/modules/statistics/statistics.js

118 lines
3.3 KiB
JavaScript
Raw Normal View History

2015-07-28 17:49:58 +00:00
/* global require, APP */
/**
2014-12-17 16:21:25 +00:00
* Created by hristo on 8/4/14.
*/
var RTPStats = require("./RTPStatsCollector.js");
var EventEmitter = require("events");
var StreamEventTypes = require("../../service/RTC/StreamEventTypes.js");
var XMPPEvents = require("../../service/xmpp/XMPPEvents");
var CallStats = require("./CallStats");
2015-06-26 12:32:40 +00:00
var RTCEvents = require("../../service/RTC/RTCEvents");
var StatisticsEvents = require("../../service/statistics/Events");
2014-12-17 16:21:25 +00:00
var eventEmitter = new EventEmitter();
var rtpStats = null;
2015-07-28 17:49:58 +00:00
function stopRemote() {
if (rtpStats) {
2014-12-17 16:21:25 +00:00
rtpStats.stop();
eventEmitter.emit(StatisticsEvents.STOP);
2014-12-17 16:21:25 +00:00
rtpStats = null;
}
}
function startRemoteStats (peerconnection) {
2015-07-28 17:49:58 +00:00
if (rtpStats) {
rtpStats.stop();
2014-12-17 16:21:25 +00:00
}
rtpStats = new RTPStats(peerconnection, 200, 2000, eventEmitter);
rtpStats.start();
2014-12-17 16:21:25 +00:00
}
function onDisposeConference(onUnload) {
2015-06-26 12:32:40 +00:00
CallStats.sendTerminateEvent();
stopRemote();
2015-12-29 12:41:43 +00:00
if (onUnload) {
eventEmitter.removeAllListeners();
}
}
2015-12-29 12:41:43 +00:00
export default {
2014-12-17 16:21:25 +00:00
/**
* Indicates that this audio level is for local jid.
* @type {string}
*/
LOCAL_JID: 'local',
addListener: function(type, listener) {
eventEmitter.on(type, listener);
2014-12-17 16:21:25 +00:00
},
removeListener: function (type, listener) {
eventEmitter.removeListener(type, listener);
2014-12-17 16:21:25 +00:00
},
stop: function () {
stopRemote();
2015-12-29 12:41:43 +00:00
if (eventEmitter) {
2014-12-17 16:21:25 +00:00
eventEmitter.removeAllListeners();
}
},
2015-12-29 12:41:43 +00:00
onAudioMute (mute) {
CallStats.sendMuteEvent(mute, "audio");
},
onVideoMute (mute) {
CallStats.sendMuteEvent(mute, "video");
},
onGetUserMediaFailed (e) {
CallStats.sendGetUserMediaFailed(e);
2014-12-17 16:21:25 +00:00
},
2014-12-19 13:59:08 +00:00
start: function () {
2015-12-29 12:41:43 +00:00
const xmpp = APP.conference._room.xmpp;
xmpp.addListener(
XMPPEvents.DISPOSE_CONFERENCE,
onDisposeConference
);
//FIXME: we may want to change CALL INCOMING event to
// onnegotiationneeded
2015-12-29 12:41:43 +00:00
xmpp.addListener(XMPPEvents.CALL_INCOMING, function (event) {
startRemoteStats(event.peerconnection);
2015-12-29 12:41:43 +00:00
// CallStats.init(event);
2015-06-26 12:32:40 +00:00
});
2015-12-29 12:41:43 +00:00
xmpp.addListener(
XMPPEvents.PEERCONNECTION_READY,
function (session) {
2015-12-29 12:41:43 +00:00
CallStats.init(session);
}
);
xmpp.addListener(XMPPEvents.CONFERENCE_SETUP_FAILED, function () {
2015-06-26 12:32:40 +00:00
CallStats.sendSetupFailedEvent();
2015-07-28 17:49:58 +00:00
});
2015-11-05 16:53:15 +00:00
2015-12-29 12:41:43 +00:00
xmpp.addListener(RTCEvents.CREATE_OFFER_FAILED, function (e, pc) {
CallStats.sendCreateOfferFailed(e, pc);
2015-11-05 16:53:15 +00:00
});
2015-12-29 12:41:43 +00:00
xmpp.addListener(RTCEvents.CREATE_ANSWER_FAILED, function (e, pc) {
CallStats.sendCreateAnswerFailed(e, pc);
2015-11-05 16:53:15 +00:00
});
2015-12-29 12:41:43 +00:00
xmpp.addListener(
2015-11-10 22:40:25 +00:00
RTCEvents.SET_LOCAL_DESCRIPTION_FAILED,
function (e, pc) {
CallStats.sendSetLocalDescFailed(e, pc);
}
);
2015-12-29 12:41:43 +00:00
xmpp.addListener(
2015-11-10 22:40:25 +00:00
RTCEvents.SET_REMOTE_DESCRIPTION_FAILED,
function (e, pc) {
CallStats.sendSetRemoteDescFailed(e, pc);
}
);
2015-12-29 12:41:43 +00:00
xmpp.addListener(
RTCEvents.ADD_ICE_CANDIDATE_FAILED,
function (e, pc) {
CallStats.sendAddIceCandidateFailed(e, pc);
}
);
2014-12-17 16:21:25 +00:00
}
};