@@ -14,13 +14,13 @@ function convert(opt) {
14
14
15
15
function OpenRadio_Core ( opt ) {
16
16
var Core = new events ( ) ;
17
- var sink = new Map ( ) ;
18
17
var stream = null ;
19
18
var converted = null ;
20
-
21
- sink . deleteAll = function deleteAll ( ) {
22
- sink . forEach ( ( s , id ) => {
23
- sink . delete ( id ) ;
19
+
20
+ Core . sink = new Map ( ) ;
21
+ Core . sink . deleteAll = function deleteAll ( ) {
22
+ Core . sink . forEach ( ( s , id ) => {
23
+ Core . sink . delete ( id ) ;
24
24
} ) ;
25
25
} ;
26
26
@@ -40,15 +40,15 @@ function OpenRadio_Core(opt) {
40
40
41
41
stream . on ( "data" , ( chunk ) => {
42
42
Core . emit ( "data" , chunk ) ;
43
- sink . forEach ( ( dest , id ) => {
43
+ Core . sink . forEach ( ( dest , id ) => {
44
44
try {
45
45
dest . write ( chunk , ( error ) => {
46
46
if ( error ) {
47
- return sink . delete ( id ) ;
47
+ return Core . sink . delete ( id ) ;
48
48
}
49
49
} ) ;
50
50
} catch ( error ) {
51
- sink . delete ( id ) ;
51
+ Core . sink . delete ( id ) ;
52
52
}
53
53
} ) ;
54
54
} ) ;
@@ -70,11 +70,20 @@ function OpenRadio_Core(opt) {
70
70
71
71
Core . pipe = function ( dest ) {
72
72
var id = Math . random ( ) . toString ( 36 ) . slice ( 2 ) ;
73
- sink . set ( id , dest ) ;
73
+ Core . sink . set ( id , dest ) ;
74
+ dest . on ( 'unpipe' , ( ) => {
75
+ Core . sink . delete ( id ) ;
76
+ } ) ;
77
+ dest . on ( 'error' , ( e ) => {
78
+ Core . sink . delete ( id ) ;
79
+ Core . emit ( 'error' , e ) ;
80
+ } ) ;
81
+ dest . on ( 'close' , ( ) => Core . sink . delete ( id ) ) ;
82
+ dest . on ( 'end' , ( ) => Core . sink . delete ( id ) ) ;
83
+ dest . on ( 'finish' , ( ) => Core . sink . delete ( id ) ) ;
74
84
return id ;
75
85
} ;
76
86
77
- Core . sink = sink ;
78
87
return Core ;
79
88
}
80
89
0 commit comments