瀏覽代碼

Handle jibri errors and busy status

tags/v0.0.2
yanas 9 年之前
父節點
當前提交
e4928ef6e4
共有 3 個檔案被更改,包括 28 行新增10 行删除
  1. 2
    0
      JitsiMeetJS.js
  2. 9
    0
      JitsiRecorderErrors.js
  3. 17
    10
      modules/xmpp/recording.js

+ 2
- 0
JitsiMeetJS.js 查看文件

8
 var JitsiConferenceErrors = require("./JitsiConferenceErrors");
8
 var JitsiConferenceErrors = require("./JitsiConferenceErrors");
9
 var JitsiTrackEvents = require("./JitsiTrackEvents");
9
 var JitsiTrackEvents = require("./JitsiTrackEvents");
10
 var JitsiTrackErrors = require("./JitsiTrackErrors");
10
 var JitsiTrackErrors = require("./JitsiTrackErrors");
11
+var JitsiRecorderErrors = require("./JitsiRecorderErrors");
11
 var Logger = require("jitsi-meet-logger");
12
 var Logger = require("jitsi-meet-logger");
12
 var MediaType = require("./service/RTC/MediaType");
13
 var MediaType = require("./service/RTC/MediaType");
13
 var RTC = require("./modules/RTC/RTC");
14
 var RTC = require("./modules/RTC/RTC");
48
     errors: {
49
     errors: {
49
         conference: JitsiConferenceErrors,
50
         conference: JitsiConferenceErrors,
50
         connection: JitsiConnectionErrors,
51
         connection: JitsiConnectionErrors,
52
+        recorder: JitsiRecorderErrors,
51
         track: JitsiTrackErrors
53
         track: JitsiTrackErrors
52
     },
54
     },
53
     logLevels: Logger.levels,
55
     logLevels: Logger.levels,

+ 9
- 0
JitsiRecorderErrors.js 查看文件

8
      */
8
      */
9
     RECORDER_UNAVAILABLE: "recorder.unavailable",
9
     RECORDER_UNAVAILABLE: "recorder.unavailable",
10
 
10
 
11
+    /**
12
+     * Indicates that all available recorders are currently busy.
13
+     */
14
+    RECORDER_BUSY: "recorder.busy",
15
+
11
     /**
16
     /**
12
      * Indicates that the authentication token is missing.
17
      * Indicates that the authentication token is missing.
13
      */
18
      */
18
      */
23
      */
19
     STATE_CHANGE_FAILED: "recorder.stateChangeFailed",
24
     STATE_CHANGE_FAILED: "recorder.stateChangeFailed",
20
 
25
 
26
+    /**
27
+     * Indicates an invalid state.
28
+     */
29
+    INVALID_STATE: "recorder.invalidState"
21
 };
30
 };
22
 
31
 
23
 module.exports = JitsiRecorderErrors;
32
 module.exports = JitsiRecorderErrors;

+ 17
- 10
modules/xmpp/recording.js 查看文件

40
     OFF: "off",
40
     OFF: "off",
41
     AVAILABLE: "available",
41
     AVAILABLE: "available",
42
     UNAVAILABLE: "unavailable",
42
     UNAVAILABLE: "unavailable",
43
-    PENDING: "pending"
43
+    PENDING: "pending",
44
+    BUSY: "busy",
45
+    FAILED: "failed"
44
 };
46
 };
45
 
47
 
46
 Recording.action = {
48
 Recording.action = {
77
     this.eventEmitter.emit(XMPPEvents.RECORDER_STATE_CHANGED, this.state);
79
     this.eventEmitter.emit(XMPPEvents.RECORDER_STATE_CHANGED, this.state);
78
 };
80
 };
79
 
81
 
80
-Recording.prototype.setRecordingJibri = function (state, callback, errCallback,
81
-    options) {
82
+Recording.prototype.setRecordingJibri
83
+    = function (state, callback, errCallback, options) {
84
+
82
     if (state == this.state){
85
     if (state == this.state){
83
-        errCallback(new Error("Invalid state!"));
86
+        errCallback(JitsiRecorderErrors.INVALID_STATE);
84
     }
87
     }
85
     options = options || {};
88
     options = options || {};
86
 
89
 
215
     var oldState = this.state;
218
     var oldState = this.state;
216
 
219
 
217
     // If the recorder is currently unavailable we throw an error.
220
     // If the recorder is currently unavailable we throw an error.
218
-    if (oldState === Recording.status.UNAVAILABLE)
219
-        statusChangeHandler("error",
220
-            new Error(JitsiRecorderErrors.RECORDER_UNAVAILABLE));
221
+    if (oldState === Recording.status.UNAVAILABLE
222
+        || oldState === Recording.status.FAILED)
223
+        statusChangeHandler(Recording.status.FAILED,
224
+                            JitsiRecorderErrors.RECORDER_UNAVAILABLE);
225
+    else if (oldState === Recording.status.BUSY)
226
+        statusChangeHandler(Recording.status.BUSY,
227
+                            JitsiRecorderErrors.RECORDER_BUSY);
221
 
228
 
222
     // If we're about to turn ON the recording we need either a streamId or
229
     // If we're about to turn ON the recording we need either a streamId or
223
     // an authentication token depending on the recording type. If we don't
230
     // an authentication token depending on the recording type. If we don't
226
         || oldState === Recording.status.AVAILABLE)
233
         || oldState === Recording.status.AVAILABLE)
227
         && ((!options.token && this.type === Recording.types.COLIBRI) ||
234
         && ((!options.token && this.type === Recording.types.COLIBRI) ||
228
         (!options.streamId && this.type === Recording.types.JIBRI))) {
235
         (!options.streamId && this.type === Recording.types.JIBRI))) {
229
-        statusChangeHandler("error",
230
-            new Error(JitsiRecorderErrors.NO_TOKEN));
236
+        statusChangeHandler(Recording.status.FAILED,
237
+                            JitsiRecorderErrors.NO_TOKEN);
231
         logger.error("No token passed!");
238
         logger.error("No token passed!");
232
         return;
239
         return;
233
     }
240
     }
249
                 statusChangeHandler(state);
256
                 statusChangeHandler(state);
250
             }
257
             }
251
         }, function (error) {
258
         }, function (error) {
252
-            statusChangeHandler("error", error);
259
+            statusChangeHandler(Recording.status.FAILED, error);
253
         }, options);
260
         }, options);
254
 };
261
 };
255
 
262
 

Loading…
取消
儲存