(function(OCA, OC) {
'use strict';
OCA.SpreedMe = OCA.SpreedMe || {};
function SignalingBase(settings) {
this.settings = settings;
this.sessionId = '';
this.currentCallToken = null;
this.handlers = {};
}
SignalingBase.prototype.on = function(ev, handler) {
if (!this.handlers.hasOwnProperty(ev)) {
this.handlers[ev] = [handler];
} else {
this.handlers[ev].push(handler);
}
};
SignalingBase.prototype.emit = function(/*ev, data*/) {
// Override in subclasses.
};
SignalingBase.prototype._trigger = function(ev, args) {
var handlers = this.handlers[ev];
if (!handlers) {
return;
}
handlers = handlers.slice(0);
for (var i = 0, len = handlers.length; i < len; i++) {
var handler = handlers[i];
handler.apply(handler, args);
}
};
SignalingBase.prototype.getSessionid = function() {
return this.sessionId;
};
SignalingBase.prototype.disconnect = function() {
this.sessionId = '';
this.currentCallToken = null;
};
SignalingBase.prototype.emit = function(ev, data) {
switch (ev) {
case 'join':
var callback = arguments[2];
var token = data;
this.joinCall(token, callback);
break;
case 'leave':
this.leaveCurrentCall();
break;
case 'message':
this.sendCallMessage(data);
break;
}
};
SignalingBase.prototype.leaveCurrentCall = function() {
if (this.currentCallToken) {
this.leaveCall(this.currentCallToken);
this.currentCallToken = null;
}
};
SignalingBase.prototype.leaveAllCalls = function() {
// Override if necessary.
};
SignalingBase