소스 검색

reuse TransportToJingle

master
Philipp Hancke 11 년 전
부모
커밋
b2c6a91a60
2개의 변경된 파일48개의 추가작업 그리고 90개의 파일을 삭제
  1. 3
    54
      libs/colibri.js
  2. 45
    36
      libs/strophejingle.bundle.js

+ 3
- 54
libs/colibri.js 파일 보기

145
             elem.up();
145
             elem.up();
146
         }
146
         }
147
 
147
 
148
-        // FIXME: should reuse code from .toJingle
149
-        elem.c('transport', {xmlns: 'urn:xmpp:jingle:transports:ice-udp:1'});
150
-        var tmp = SDPUtil.iceparams(media, localSDP.session);
151
-        if (tmp) {
152
-            elem.attrs(tmp);
153
-            var fingerprints = SDPUtil.find_lines(media, 'a=fingerprint:', localSDP.session);
154
-            fingerprints.forEach(function (line) {
155
-                tmp = SDPUtil.parse_fingerprint(line);
156
-                //tmp.xmlns = 'urn:xmpp:tmp:jingle:apps:dtls:0';
157
-                tmp.xmlns = 'urn:xmpp:jingle:apps:dtls:0';
158
-                elem.c('fingerprint').t(tmp.fingerprint);
159
-                delete tmp.fingerprint;
160
-                line = SDPUtil.find_line(media, 'a=setup:', ob.session);
161
-                if (line) {
162
-                    tmp.setup = line.substr(8);
163
-                }
164
-                elem.attrs(tmp);
165
-                elem.up();
166
-            });
167
-            // XEP-0176
168
-            if (SDPUtil.find_line(media, 'a=candidate:', localSDP.session)) { // add any a=candidate lines
169
-                lines = SDPUtil.find_lines(media, 'a=candidate:', localSDP.session);
170
-                for (j = 0; j < lines.length; j++) {
171
-                    tmp = SDPUtil.candidateToJingle(lines[j]);
172
-                    elem.c('candidate', tmp).up();
173
-                }
174
-            }
175
-            elem.up(); // end of transport
176
-        }
148
+        localSDP.TransportToJingle(channel, elem);
149
+
177
         elem.up(); // end of channel
150
         elem.up(); // end of channel
178
         for (j = 0; j < ob.peers.length; j++) {
151
         for (j = 0; j < ob.peers.length; j++) {
179
             elem.c('channel', {initiator: 'true', expire:'15' }).up();
152
             elem.c('channel', {initiator: 'true', expire:'15' }).up();
489
             */
462
             */
490
             change.up();
463
             change.up();
491
         });
464
         });
492
-
493
         // now add transport
465
         // now add transport
494
-        change.c('transport', {xmlns: 'urn:xmpp:jingle:transports:ice-udp:1'});
495
-        var fingerprints = SDPUtil.find_lines(remoteSDP.media[channel], 'a=fingerprint:', remoteSDP.session);
496
-        fingerprints.forEach(function (line) {
497
-            tmp = SDPUtil.parse_fingerprint(line);
498
-            tmp.xmlns = 'urn:xmpp:jingle:apps:dtls:0';
499
-            change.c('fingerprint').t(tmp.fingerprint);
500
-            delete tmp.fingerprint;
501
-            line = SDPUtil.find_line(remoteSDP.media[channel], 'a=setup:', remoteSDP.session);
502
-            if (line) {
503
-                tmp.setup = line.substr(8);
504
-            }
505
-            change.attrs(tmp);
506
-            change.up();
507
-        });
508
-        var candidates = SDPUtil.find_lines(remoteSDP.media[channel], 'a=candidate:', remoteSDP.session);
509
-        candidates.forEach(function (line) {
510
-            var tmp = SDPUtil.candidateToJingle(line);
511
-            change.c('candidate', tmp).up();
512
-        });
513
-        tmp = SDPUtil.iceparams(remoteSDP.media[channel], remoteSDP.session);
514
-        if (tmp) {
515
-            change.attrs(tmp);
466
+        remoteSDP.TransportToJingle(channel, change);
516
 
467
 
517
-        }
518
-        change.up(); // end of transport
519
         change.up(); // end of channel
468
         change.up(); // end of channel
520
         change.up(); // end of content
469
         change.up(); // end of content
521
     }
470
     }

+ 45
- 36
libs/strophejingle.bundle.js 파일 보기

687
                         elem.c('parameter', tmp[k]).up();
687
                         elem.c('parameter', tmp[k]).up();
688
                     }
688
                     }
689
                 }
689
                 }
690
-                this.RtcpFbToJingle(this.media[i], elem, mline.fmt[j]); // XEP-0293 -- map a=rtcp-fb
690
+                this.RtcpFbToJingle(i, elem, mline.fmt[j]); // XEP-0293 -- map a=rtcp-fb
691
 
691
 
692
                 elem.up();
692
                 elem.up();
693
             }
693
             }
737
             }
737
             }
738
 
738
 
739
             // XEP-0293 -- map a=rtcp-fb:*
739
             // XEP-0293 -- map a=rtcp-fb:*
740
-            this.RtcpFbToJingle(this.media[i], elem, '*');
740
+            this.RtcpFbToJingle(i, elem, '*');
741
 
741
 
742
             // XEP-0294
742
             // XEP-0294
743
             if (SDPUtil.find_line(this.media[i], 'a=extmap:')) {
743
             if (SDPUtil.find_line(this.media[i], 'a=extmap:')) {
770
             elem.up(); // end of description
770
             elem.up(); // end of description
771
         }
771
         }
772
 
772
 
773
-        elem.c('transport', {xmlns: 'urn:xmpp:jingle:transports:ice-udp:1'});
774
-        // XEP-0320
775
-        var fingerprints = SDPUtil.find_lines(this.media[i], 'a=fingerprint:', this.session);
776
-        fingerprints.forEach(function(line) {
777
-            tmp = SDPUtil.parse_fingerprint(line);
778
-            tmp.xmlns = 'urn:xmpp:tmp:jingle:apps:dtls:0';
779
-            // tmp.xmlns = 'urn:xmpp:jingle:apps:dtls:0'; -- FIXME: update receivers first
780
-            elem.c('fingerprint').t(tmp.fingerprint);
781
-            delete tmp.fingerprint;
782
-            line = SDPUtil.find_line(ob.media[i], 'a=setup:', ob.session);
783
-            if (line) {
784
-                tmp.setup = line.substr(8);
785
-            }
786
-            elem.attrs(tmp);
787
-            elem.up();
788
-        });
789
-        tmp = SDPUtil.iceparams(this.media[i], this.session);
790
-        if (tmp) {
791
-            elem.attrs(tmp);
792
-            // XEP-0176
793
-            if (SDPUtil.find_line(this.media[i], 'a=candidate:', this.session)) { // add any a=candidate lines
794
-                lines = SDPUtil.find_lines(this.media[i], 'a=candidate:', this.session);
795
-                for (j = 0; j < lines.length; j++) {
796
-                    tmp = SDPUtil.candidateToJingle(lines[j]);
797
-                    elem.c('candidate', tmp).up();
798
-                }
799
-            }
800
-            elem.up(); // end of transport
801
-        }
773
+        // map ice-ufrag/pwd, dtls fingerprint, candidates
774
+        this.TransportToJingle(i, elem);
802
 
775
 
803
         if (SDPUtil.find_line(this.media[i], 'a=sendrecv', this.session)) {
776
         if (SDPUtil.find_line(this.media[i], 'a=sendrecv', this.session)) {
804
             elem.attrs({senders: 'both'});
777
             elem.attrs({senders: 'both'});
819
     return elem;
792
     return elem;
820
 };
793
 };
821
 
794
 
822
-SDP.prototype.RtcpFbToJingle = function (sdp, elem, payloadtype) { // XEP-0293
823
-    var lines = SDPUtil.find_lines(sdp, 'a=rtcp-fb:' + payloadtype);
824
-    for (var i = 0; i < lines.length; i++) {
825
-        var tmp = SDPUtil.parse_rtcpfb(lines[i]);
795
+SDP.prototype.TransportToJingle = function (mediaindex, elem) {
796
+    var i = mediaindex;
797
+    var tmp;
798
+    var ob = this;
799
+    elem.c('transport');
800
+
801
+    // XEP-0320
802
+    var fingerprints = SDPUtil.find_lines(this.media[mediaindex], 'a=fingerprint:', this.session);
803
+    fingerprints.forEach(function(line) {
804
+        tmp = SDPUtil.parse_fingerprint(line);
805
+        tmp.xmlns = 'urn:xmpp:tmp:jingle:apps:dtls:0';
806
+        // tmp.xmlns = 'urn:xmpp:jingle:apps:dtls:0'; -- FIXME: update receivers first
807
+        elem.c('fingerprint').t(tmp.fingerprint);
808
+        delete tmp.fingerprint;
809
+        line = SDPUtil.find_line(ob.media[mediaindex], 'a=setup:', ob.session);
810
+        if (line) {
811
+            tmp.setup = line.substr(8);
812
+        }
813
+        elem.attrs(tmp);
814
+        elem.up(); // end of fingerprint
815
+    });
816
+    tmp = SDPUtil.iceparams(this.media[mediaindex], this.session);
817
+    if (tmp) {
818
+        tmp.xmlns = 'urn:xmpp:jingle:transports:ice-udp:1';
819
+        elem.attrs(tmp);
820
+        // XEP-0176
821
+        if (SDPUtil.find_line(this.media[mediaindex], 'a=candidate:', this.session)) { // add any a=candidate lines
822
+            var lines = SDPUtil.find_lines(this.media[mediaindex], 'a=candidate:', this.session);
823
+            lines.forEach(function (line) {
824
+                elem.c('candidate', SDPUtil.candidateToJingle(line)).up();
825
+            });
826
+        }
827
+    }
828
+    elem.up(); // end of transport
829
+}
830
+
831
+SDP.prototype.RtcpFbToJingle = function (mediaindex, elem, payloadtype) { // XEP-0293
832
+    var lines = SDPUtil.find_lines(this.media[mediaindex], 'a=rtcp-fb:' + payloadtype);
833
+    lines.forEach(function (line) {
834
+        var tmp = SDPUtil.parse_rtcpfb(line);
826
         if (tmp.type == 'trr-int') {
835
         if (tmp.type == 'trr-int') {
827
             elem.c('rtcp-fb-trr-int', {xmlns: 'urn:xmpp:jingle:apps:rtp:rtcp-fb:0', value: tmp.params[0]});
836
             elem.c('rtcp-fb-trr-int', {xmlns: 'urn:xmpp:jingle:apps:rtp:rtcp-fb:0', value: tmp.params[0]});
828
             elem.up();
837
             elem.up();
833
             }
842
             }
834
             elem.up();
843
             elem.up();
835
         }
844
         }
836
-    }
845
+    });
837
 };
846
 };
838
 
847
 
839
 SDP.prototype.RtcpFbFromJingle = function (elem, payloadtype) { // XEP-0293
848
 SDP.prototype.RtcpFbFromJingle = function (elem, payloadtype) { // XEP-0293

Loading…
취소
저장