diff --git a/labs/bbb-webrtc-sfu/lib/audio/audio.js b/labs/bbb-webrtc-sfu/lib/audio/audio.js index 3a6754b0b9f45498e7b892fce03c21b357bafc92..1f16dd399926cddb8148d75ba720545d186010b8 100644 --- a/labs/bbb-webrtc-sfu/lib/audio/audio.js +++ b/labs/bbb-webrtc-sfu/lib/audio/audio.js @@ -7,8 +7,10 @@ const MCSApi = require('../mcs-core/lib/media/MCSApiStub'); const C = require('../bbb/messages/Constants'); const Logger = require('../utils/Logger'); const Messaging = require('../bbb/messages/Messaging'); +const BaseProvider = require('../base/BaseProvider'); +const LOG_PREFIX = "[audio]"; -module.exports = class Audio { +module.exports = class Audio extends BaseProvider { constructor(_bbbGW, _id, voiceBridge) { this.mcs = new MCSApi(); this.bbbGW = _bbbGW; @@ -32,6 +34,7 @@ module.exports = class Audio { this.mcs.addIceCandidate(this.audioEndpoints[connectionId], _candidate); } catch (err) { + this._handleError(LOG_PREFIX, err); Logger.error("[audio] ICE candidate could not be added to media controller.", err); } } @@ -52,6 +55,7 @@ module.exports = class Audio { } } catch (err) { + this._handleError(LOG_PREFIX, err); Logger.error("[audio] ICE candidate could not be added to media controller.", err); } } @@ -190,6 +194,7 @@ module.exports = class Audio { return callback(null, sdpAnswer); } catch (err) { + this._handleError(LOG_PREFIX, err); Logger.error("[audio] MCS returned error => " + err); return callback(err); } @@ -217,6 +222,7 @@ module.exports = class Audio { return; } catch (err) { + this._handleError(LOG_PREFIX, err); Logger.error('[audio] MCS returned error when trying to unsubscribe', err); return; } @@ -246,7 +252,7 @@ module.exports = class Audio { return Promise.resolve(); } catch (err) { - // TODO error handling + this._handleError(LOG_PREFIX, err); return Promise.reject(); } }; diff --git a/labs/bbb-webrtc-sfu/lib/base/BaseManager.js b/labs/bbb-webrtc-sfu/lib/base/BaseManager.js index 5f83ad17c570cb9ffeff6bd3078aba7dab00c62e..6e3668e1f9f982fd0e0abb3bac8c8f1314968c1d 100644 --- a/labs/bbb-webrtc-sfu/lib/base/BaseManager.js +++ b/labs/bbb-webrtc-sfu/lib/base/BaseManager.js @@ -10,7 +10,6 @@ const BigBlueButtonGW = require('../bbb/pubsub/bbb-gw'); const C = require('../bbb/messages/Constants'); const Logger = require('../utils/Logger'); -const isRecordedStream = require('../utils/Utils.js').isRecordedStream; module.exports = class BaseManager { constructor (connectionChannel, additionalChannels = [], logPrefix = C.BASE_MANAGER_PREFIX) { diff --git a/labs/bbb-webrtc-sfu/lib/base/BaseProvider.js b/labs/bbb-webrtc-sfu/lib/base/BaseProvider.js new file mode 100644 index 0000000000000000000000000000000000000000..16c63697de3c157e89edacf3c3351529b4bcba19 --- /dev/null +++ b/labs/bbb-webrtc-sfu/lib/base/BaseProvider.js @@ -0,0 +1,17 @@ +"use strict"; + +const C = require('../bbb/messages/Constants'); +const Logger = require('../utils/Logger'); +const EventEmitter = require('events').EventEmitter; + +module.exports = class BaseProvider extends EventEmitter { + constructor () { + super(); + } + + _handleError (logPrefix, error) { + Logger.debug(logPrefix, "Handling error", error.code, error.message); + Logger.trace(logPrefix, error.stack); + } +}; + diff --git a/labs/bbb-webrtc-sfu/lib/screenshare/screenshare.js b/labs/bbb-webrtc-sfu/lib/screenshare/screenshare.js index 08ea257eba8e7de8a10a09f26cc039dc7933c3bf..19f78e1713718d4dd5df86063dfbf326f871564c 100644 --- a/labs/bbb-webrtc-sfu/lib/screenshare/screenshare.js +++ b/labs/bbb-webrtc-sfu/lib/screenshare/screenshare.js @@ -14,22 +14,23 @@ const moment = require('moment'); const h264_sdp = require('../h264-sdp'); const now = moment(); const MCSApi = require('../mcs-core/lib/media/MCSApiStub'); +const Logger = require('../utils/Logger'); +const BaseProvider = require('../base/BaseProvider'); const config = require('config'); const kurentoIp = config.get('kurentoIp'); const localIpAddress = config.get('localIpAddress'); const FORCE_H264 = config.get('screenshare-force-h264'); const PREFERRED_H264_PROFILE = config.get('screenshare-preferred-h264-profile'); -const EventEmitter = require('events').EventEmitter; -const Logger = require('../utils/Logger'); const SHOULD_RECORD = config.get('recordScreenSharing'); const KEYFRAME_INTERVAL = config.get('screenshareKeyframeInterval'); +const LOG_PREFIX = "[screenshare]"; // Global MCS endpoints mapping. These hashes maps IDs generated by the mcs-core // lib to the ones generate in the ScreenshareManager var sharedScreens = {}; var rtpEndpoints = {}; -module.exports = class Screenshare extends EventEmitter { +module.exports = class Screenshare extends BaseProvider { constructor(id, bbbgw, voiceBridge, caller = 'caller', vh, vw, meetingId) { super(); this.mcs = new MCSApi(); @@ -69,6 +70,7 @@ module.exports = class Screenshare extends EventEmitter { await this.flushCandidatesQueue(this._presenterEndpoint, this._presenterCandidatesQueue); await this.mcs.addIceCandidate(this._presenterEndpoint, candidate); } catch (err) { + this._handleError(LOG_PREFIX, err); Logger.error("[screenshare] ICE candidate could not be added to media controller.", err); } } else { @@ -82,6 +84,7 @@ module.exports = class Screenshare extends EventEmitter { await this.flushCandidatesQueue(endpoint, this._viewersCandidatesQueue[callerName]); await this.mcs.addIceCandidate(endpoint, candidate); } catch (err) { + this._handleError(LOG_PREFIX, err); Logger.error("[screenshare] Viewer ICE candidate could not be added to media controller.", err); } } else { @@ -107,6 +110,7 @@ module.exports = class Screenshare extends EventEmitter { queue = []; resolve(); }).catch((err) => { + this._handleError(LOG_PREFIX, err); Logger.error("[screenshare] ICE candidate could not be added to media controller.", err); reject(); }); @@ -172,6 +176,7 @@ module.exports = class Screenshare extends EventEmitter { serverState (event) { switch (event && event.eventTag) { case C.MEDIA_SERVER_OFFLINE: + this._handleError(LOG_PREFIX, err); Logger.error("[screenshare] Screenshare provider received MEDIA_SERVER_OFFLINE event"); this.emit(C.MEDIA_SERVER_OFFLINE, event); break; @@ -193,6 +198,7 @@ module.exports = class Screenshare extends EventEmitter { this.sendStartShareEvent(); resolve(this.recording); } catch (err) { + this._handleError(LOG_PREFIX, err); Logger.error("[screenshare] Error on start recording with message", err); reject(err); } @@ -239,6 +245,7 @@ module.exports = class Screenshare extends EventEmitter { } catch (error) { + this._handleError(LOG_PREFIX, error); Logger.error("[screenshare] MCS Join returned error =>", error); return reject (error); } @@ -250,6 +257,7 @@ module.exports = class Screenshare extends EventEmitter { return resolve(sdpAnswer); } catch (err) { + this._handleError(LOG_PREFIX, err); return reject(err); } } @@ -260,6 +268,7 @@ module.exports = class Screenshare extends EventEmitter { return resolve(sdpAnswer); } catch (err) { + this._handleError(LOG_PREFIX, err); return reject(err); } } @@ -301,6 +310,7 @@ module.exports = class Screenshare extends EventEmitter { return resolve(presenterSdpAnswer); } catch (err) { + this._handleError(LOG_PREFIX, err); Logger.error("[screenshare] MCS publish returned error =>", err); return reject(err); } @@ -332,6 +342,7 @@ module.exports = class Screenshare extends EventEmitter { return resolve(sdpAnswer); } catch (err) { + this._handleError(LOG_PREFIX, err); Logger.error("[screenshare] MCS publish returned error =>", err); return reject(err); } @@ -357,6 +368,7 @@ module.exports = class Screenshare extends EventEmitter { return resolve(); } catch (err) { + this._handleError(LOG_PREFIX, err); Logger.error('[screenshare] MCS returned an error when trying to leave =>', err); return resolve(); } @@ -397,6 +409,7 @@ module.exports = class Screenshare extends EventEmitter { } } catch (err) { + this._handleError(LOG_PREFIX, err); Logger.error(err); resolve(); } @@ -479,6 +492,7 @@ module.exports = class Screenshare extends EventEmitter { return; } catch (err) { + this._handleError(LOG_PREFIX, err); Logger.error('[screenshare] MCS returned error when trying to unsubscribe', err); return; } diff --git a/labs/bbb-webrtc-sfu/lib/video/video.js b/labs/bbb-webrtc-sfu/lib/video/video.js index 3881b1b9451a2e310bf95185307038c8a7bc9b9e..9c877cf577679dd4ee3ab57b07c14cebc8c3b559 100644 --- a/labs/bbb-webrtc-sfu/lib/video/video.js +++ b/labs/bbb-webrtc-sfu/lib/video/video.js @@ -7,13 +7,14 @@ const C = require('../bbb/messages/Constants'); const Logger = require('../utils/Logger'); const Messaging = require('../bbb/messages/Messaging'); const h264_sdp = require('../h264-sdp'); +const BaseProvider = require('../base/BaseProvider'); const FORCE_H264 = config.get('webcam-force-h264'); -const EventEmitter = require('events').EventEmitter; const SHOULD_RECORD = config.get('recordWebcams'); +const LOG_PREFIX = "[video]"; var sharedWebcams = {}; -module.exports = class Video extends EventEmitter { +module.exports = class Video extends BaseProvider { constructor(_bbbGW, _meetingId, _id, _shared, _connectionId) { super(); this.mcs = new MCSApi(); @@ -53,6 +54,7 @@ module.exports = class Video extends EventEmitter { await this.mcs.addIceCandidate(this.mediaId, _candidate); } catch (err) { + this._handleError(LOG_PREFIX, err); Logger.error("[video] ICE candidate could not be added to media controller.", err); } } @@ -72,6 +74,7 @@ module.exports = class Video extends EventEmitter { this.candidatesQueue = []; resolve(); }).catch((err) => { + this._handleError(LOG_PREFIX, err); Logger.error("[video] ICE candidate could not be added to media controller.", err); reject(); }); @@ -207,6 +210,7 @@ module.exports = class Video extends EventEmitter { resolve(this.recording); } catch (err) { + this._handleError(LOG_PREFIX, err); Logger.error("[video] Error on start recording with message", err); reject(err); } @@ -251,6 +255,7 @@ module.exports = class Video extends EventEmitter { return resolve(sdpAnswer); } catch (err) { + this._handleError(LOG_PREFIX, err); Logger.error("[video] MCS returned error => ", err); return reject(err); } @@ -273,6 +278,7 @@ module.exports = class Video extends EventEmitter { } } catch (err) { + this._handleError(LOG_PREFIX, err); return reject(err); } }); @@ -299,6 +305,7 @@ module.exports = class Video extends EventEmitter { } } catch (err) { + this._handleError(LOG_PREFIX, err); Logger.error("[video] MCS returned error on pause procedure with message", err); } } @@ -338,7 +345,7 @@ module.exports = class Video extends EventEmitter { resolve(); } catch (err) { - // TODO error handling + this._handleError(LOG_PREFIX, err); reject(); } });