浏览代码

Merge pull request #90 from jitsi/fix-recorder-states

Fix jibri presence initial state
master
Paweł Domas 9 年前
父节点
当前提交
09a8730117
共有 3 个文件被更改,包括 27 次插入41 次删除
  1. 2
    6
      JitsiConference.js
  2. 4
    8
      modules/xmpp/ChatRoom.js
  3. 21
    27
      modules/xmpp/recording.js

+ 2
- 6
JitsiConference.js 查看文件

710
  * and "off" if the recording is not started.
710
  * and "off" if the recording is not started.
711
  */
711
  */
712
 JitsiConference.prototype.getRecordingState = function () {
712
 JitsiConference.prototype.getRecordingState = function () {
713
-    if(this.room)
714
-        return this.room.getRecordingState();
715
-    return Recording.status.OFF;
713
+    return (this.room) ? this.room.getRecordingState() : undefined;
716
 }
714
 }
717
 
715
 
718
 /**
716
 /**
719
  * Returns the url of the recorded video.
717
  * Returns the url of the recorded video.
720
  */
718
  */
721
 JitsiConference.prototype.getRecordingURL = function () {
719
 JitsiConference.prototype.getRecordingURL = function () {
722
-    if(this.room)
723
-        return this.room.getRecordingURL();
724
-    return null;
720
+    return (this.room) ? this.room.getRecordingURL() : null;
725
 }
721
 }
726
 
722
 
727
 /**
723
 /**

+ 4
- 8
modules/xmpp/ChatRoom.js 查看文件

740
  * and "off" if the recording is not started.
740
  * and "off" if the recording is not started.
741
  */
741
  */
742
 ChatRoom.prototype.getRecordingState = function () {
742
 ChatRoom.prototype.getRecordingState = function () {
743
-    if(this.recording)
744
-        return this.recording.getState();
745
-    return "off";
746
-};
743
+    return (this.recording) ? this.recording.getState() : undefined;
744
+}
747
 
745
 
748
 /**
746
 /**
749
  * Returns the url of the recorded video.
747
  * Returns the url of the recorded video.
750
  */
748
  */
751
 ChatRoom.prototype.getRecordingURL = function () {
749
 ChatRoom.prototype.getRecordingURL = function () {
752
-    if(this.recording)
753
-        return this.recording.getURL();
754
-    return null;
755
-};
750
+    return (this.recording) ? this.recording.getURL() : null;
751
+}
756
 
752
 
757
 /**
753
 /**
758
  * Starts/stops the recording
754
  * Starts/stops the recording

+ 21
- 27
modules/xmpp/recording.js 查看文件

16
     this.type = type;
16
     this.type = type;
17
     this._isSupported
17
     this._isSupported
18
         = ( type === Recording.types.JIRECON && !this.jirecon
18
         = ( type === Recording.types.JIRECON && !this.jirecon
19
-            || type === Recording.types.JIBRI && !this._isServiceAvailable)
19
+            || (type !== Recording.types.JIBRI
20
+                && type !== Recording.types.COLIBRI))
20
             ? false : true;
21
             ? false : true;
21
 
22
 
22
-    this._isServiceAvailable = false;
23
-
24
     /**
23
     /**
25
      * The ID of the jirecon recording session. Jirecon generates it when we
24
      * The ID of the jirecon recording session. Jirecon generates it when we
26
      * initially start recording, and it needs to be used in subsequent requests
25
      * initially start recording, and it needs to be used in subsequent requests
52
         return;
51
         return;
53
 
52
 
54
     var newState = attributes.status;
53
     var newState = attributes.status;
55
-    console.log("handle jibri presence : ", newState);
56
-    var oldIsAvailable = this._isServiceAvailable;
57
-    // The service is available if the statu isn't undefined.
58
-    this._isServiceAvailable =
59
-        (newState && newState !== "undefined");
60
-
61
-    if (newState === "undefined"
62
-        || oldIsAvailable != this._isServiceAvailable
63
-        // If we receive an OFF state without any recording in progress we
64
-        // consider this to be an initial available state.
65
-        || (this.state === Recording.status.AVAILABLE
66
-            && newState === Recording.status.OFF))
67
-        this.state = (newState === "undefined")
68
-                        ? Recording.status.UNAVAILABLE
69
-                        : Recording.status.AVAILABLE;
70
-    else
71
-        this.state = attributes.status;
72
-
73
-    logger.log("Handle Jibri presence: ", this.state);
54
+    logger.log("Handle jibri presence : ", newState);
55
+
56
+    if (newState === this.state)
57
+        return;
58
+
59
+    if (newState === "undefined") {
60
+        this.state = Recording.status.UNAVAILABLE;
61
+    }
62
+    else if (newState === "off") {
63
+        this.state = Recording.status.AVAILABLE;
64
+    }
65
+    else {
66
+        this.state = newState;
67
+    }
74
 
68
 
75
     this.eventEmitter.emit(XMPPEvents.RECORDER_STATE_CHANGED, this.state);
69
     this.eventEmitter.emit(XMPPEvents.RECORDER_STATE_CHANGED, this.state);
76
 };
70
 };
132
             // TODO wait for an IQ with the real status, since this is
126
             // TODO wait for an IQ with the real status, since this is
133
             // provisional?
127
             // provisional?
134
             self.jireconRid = $(result).find('recording').attr('rid');
128
             self.jireconRid = $(result).find('recording').attr('rid');
135
-            console.log('Recording ' +
129
+            logger.log('Recording ' +
136
                 ((state === Recording.status.ON) ? 'started' : 'stopped') +
130
                 ((state === Recording.status.ON) ? 'started' : 'stopped') +
137
                 '(jirecon)' + result);
131
                 '(jirecon)' + result);
138
             self.state = state;
132
             self.state = state;
143
             callback(state);
137
             callback(state);
144
         },
138
         },
145
         function (error) {
139
         function (error) {
146
-            console.log('Failed to start recording, error: ', error);
140
+            logger.log('Failed to start recording, error: ', error);
147
             errCallback(error);
141
             errCallback(error);
148
         });
142
         });
149
 };
143
 };
162
     var self = this;
156
     var self = this;
163
     this.connection.sendIQ(elem,
157
     this.connection.sendIQ(elem,
164
         function (result) {
158
         function (result) {
165
-            console.log('Set recording "', state, '". Result:', result);
159
+            logger.log('Set recording "', state, '". Result:', result);
166
             var recordingElem = $(result).find('>conference>recording');
160
             var recordingElem = $(result).find('>conference>recording');
167
             var newState = recordingElem.attr('state');
161
             var newState = recordingElem.attr('state');
168
 
162
 
180
             }
174
             }
181
         },
175
         },
182
         function (error) {
176
         function (error) {
183
-            console.warn(error);
177
+            logger.warn(error);
184
             errCallback(error);
178
             errCallback(error);
185
         }
179
         }
186
     );
180
     );
199
             this.setRecordingJibri(state, callback, errCallback, options);
193
             this.setRecordingJibri(state, callback, errCallback, options);
200
             break;
194
             break;
201
         default:
195
         default:
202
-            console.error("Unknown recording type!");
196
+            logger.error("Unknown recording type!");
203
             return;
197
             return;
204
     }
198
     }
205
 };
199
 };

正在加载...
取消
保存