Sfoglia il codice sorgente

reuse TransportToJingle

j8
Philipp Hancke 11 anni fa
parent
commit
b2c6a91a60
2 ha cambiato i file con 48 aggiunte e 90 eliminazioni
  1. 3
    54
      libs/colibri.js
  2. 45
    36
      libs/strophejingle.bundle.js

+ 3
- 54
libs/colibri.js Vedi File

@@ -145,35 +145,8 @@ ColibriFocus.prototype._makeConference = function () {
145 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 150
         elem.up(); // end of channel
178 151
         for (j = 0; j < ob.peers.length; j++) {
179 152
             elem.c('channel', {initiator: 'true', expire:'15' }).up();
@@ -489,33 +462,9 @@ ColibriFocus.prototype.updateChannel = function (remoteSDP, participant) {
489 462
             */
490 463
             change.up();
491 464
         });
492
-
493 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 468
         change.up(); // end of channel
520 469
         change.up(); // end of content
521 470
     }

+ 45
- 36
libs/strophejingle.bundle.js Vedi File

@@ -687,7 +687,7 @@ SDP.prototype.toJingle = function (elem, thecreator) {
687 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 692
                 elem.up();
693 693
             }
@@ -737,7 +737,7 @@ SDP.prototype.toJingle = function (elem, thecreator) {
737 737
             }
738 738
 
739 739
             // XEP-0293 -- map a=rtcp-fb:*
740
-            this.RtcpFbToJingle(this.media[i], elem, '*');
740
+            this.RtcpFbToJingle(i, elem, '*');
741 741
 
742 742
             // XEP-0294
743 743
             if (SDPUtil.find_line(this.media[i], 'a=extmap:')) {
@@ -770,35 +770,8 @@ SDP.prototype.toJingle = function (elem, thecreator) {
770 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 776
         if (SDPUtil.find_line(this.media[i], 'a=sendrecv', this.session)) {
804 777
             elem.attrs({senders: 'both'});
@@ -819,10 +792,46 @@ SDP.prototype.toJingle = function (elem, thecreator) {
819 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 835
         if (tmp.type == 'trr-int') {
827 836
             elem.c('rtcp-fb-trr-int', {xmlns: 'urn:xmpp:jingle:apps:rtp:rtcp-fb:0', value: tmp.params[0]});
828 837
             elem.up();
@@ -833,7 +842,7 @@ SDP.prototype.RtcpFbToJingle = function (sdp, elem, payloadtype) { // XEP-0293
833 842
             }
834 843
             elem.up();
835 844
         }
836
-    }
845
+    });
837 846
 };
838 847
 
839 848
 SDP.prototype.RtcpFbFromJingle = function (elem, payloadtype) { // XEP-0293

Loading…
Annulla
Salva