UNPKG

open-easyrtc

Version:

Open-EasyRTC enables quick development of WebRTC

180 lines (155 loc) 5.41 kB
/* global module, require */ /** * Utility functions specific to EasyRTC. * * @module easyrtc_util * @author Priologic Software, info@easyrtc.com * @copyright Copyright 2016 Priologic Software. All rights reserved. * @license BSD v2, see LICENSE file in module root folder. */ var util = require("util"); var _ = require("underscore"); // General utility functions external module var g = require("./general_util"); // General utility functions local module var e = require("./easyrtc_private_obj"); // EasyRTC private object /** * Object to hold EasyRTC Utility methods and classes. * * @class */ var eu = module.exports; /** * Disconnects socket. Failure results in a debug level log message. * * @param {Object} socket Socket.io connection object. */ eu.socketDisconnect = function(socket) { try { socket.disconnect(); } catch(err) { eu.log("debug", "Socket disconnection command failed. Socket may already be disconnected."); } }; /** * Custom Error Object for EasyRTC Server Errors. * * @extends Error * @param {string} msg Text message describing the error. * @returns {Error} */ eu.ServerError = function(msg) { eu.ServerError.super_.call(this, msg, this.constructor); }; util.inherits(eu.ServerError, g.AbstractError); eu.ServerError.prototype.name = "Server Error"; eu.ServerError.prototype.errorLevel = "error"; /** * Custom Error Object for EasyRTC Application Errors. * * @extends Error * @param {string} msg Text message describing the error. * @returns {Error} */ eu.ApplicationError = function(msg) { eu.ApplicationError.super_.call(this, msg, this.constructor); }; util.inherits(eu.ApplicationError, g.AbstractError); eu.ApplicationError.prototype.name = "Application Error"; eu.ApplicationError.prototype.errorLevel = "error"; /** * Custom Error Object for Connection Errors. * * @extends Error * @param {string} msg Text message describing the error. * @returns {Error} */ eu.ConnectionError = function(msg) { eu.ConnectionError.super_.call(this, msg, this.constructor); }; util.inherits(eu.ConnectionError, g.AbstractError); eu.ConnectionError.prototype.name = "Connection Error"; eu.ConnectionError.prototype.errorLevel = "error"; /** * Custom Error Object for EasyRTC Server Warnings. * * @extends Error * @param {string} msg Text message describing the error. * @returns {Error} */ eu.ServerWarning = function(msg) { eu.ServerWarning.super_.call(this, msg, this.constructor); }; util.inherits(eu.ServerWarning, g.AbstractError); eu.ServerWarning.prototype.name = "Server Warning"; eu.ServerWarning.prototype.errorLevel = "warning"; /** * Custom Error Object for EasyRTC Application Warnings. * * @extends Error * @param {string} msg Text message describing the error. * @returns {Error} */ eu.ApplicationWarning = function(msg) { eu.ApplicationWarning.super_.call(this, msg, this.constructor); }; util.inherits(eu.ApplicationWarning, g.AbstractError); eu.ApplicationWarning.prototype.name = "Application Warning"; eu.ApplicationWarning.prototype.errorLevel = "warning"; /** * Custom Error Object for Connection Warnings. * * @extends Error * @param {string} msg Text message describing the error. * @returns {Error} */ eu.ConnectionWarning = function(msg) { eu.ConnectionWarning.super_.call(this, msg, this.constructor); }; util.inherits(eu.ConnectionWarning, g.AbstractError); eu.ConnectionWarning.prototype.name = "Connection Warning"; eu.ConnectionWarning.prototype.errorLevel = "warning"; /** * Determines if an Error object is an instance of ApplicationError, ConnectionError, or ServerError. If it is, it will return true. * * @param {Error} err * @return {Boolean} */ eu.isError = function(err) { if (err && ((err instanceof eu.ConnectionError)||(err instanceof eu.ApplicationError)||(err instanceof eu.ServerError)||(err instanceof Error))) { return true; } else { return false; } }; /** * Determines if an Error object is an instance of ApplicationWarning, ConnectionWarning, or ServerWarning. If it is, it will return true. * * @param {Error} err * @return {Boolean} */ eu.isWarning = function(err) { if (err && ((err instanceof eu.ConnectionWarning)||(err instanceof eu.ApplicationWarning)||(err instanceof eu.ServerWarning))) { return true; } else { return false; } }; /** * Returns a random available easyrtcid. * * @return {String} Available easyrtcid. A unique identifier for an EasyRTC connection. */ eu.getAvailableEasyrtcid = function() { var newEasyrtcid = ""; var easyrtcidExists = false; do { newEasyrtcid = g.randomString(); easyrtcidExists = false; for (var key in e.app) { if (e.app[key].connection[newEasyrtcid]) { easyrtcidExists = true; break; } } } while (easyrtcidExists); return newEasyrtcid; };