@@ -9,24 +9,27 @@ const makeRequest = exports.makeRequest = (method, params, id) => {
9
9
} )
10
10
}
11
11
12
- const recursiveParser = exports . recursiveParser = ( n , buffer , callback ) => {
13
- const MAX_DEPTH = 20 ;
14
- if ( buffer . length === 0 ) {
15
- return { code :0 , buffer :buffer }
16
- }
17
- if ( n > MAX_DEPTH ) {
18
- return { code :1 , buffer :buffer }
19
- }
20
- const xs = buffer . split ( '\n' )
21
- if ( xs . length === 1 ) {
22
- return { code :0 , buffer :buffer }
12
+ const createRecuesiveParser = exports . createRecuesiveParser = ( max_depth , delimiter ) => {
13
+ const MAX_DEPTH = max_depth
14
+ const DELIMITER = delimiter
15
+ const recursiveParser = ( n , buffer , callback ) => {
16
+ if ( buffer . length === 0 ) {
17
+ return { code :0 , buffer :buffer }
18
+ }
19
+ if ( n > MAX_DEPTH ) {
20
+ return { code :1 , buffer :buffer }
21
+ }
22
+ const xs = buffer . split ( DELIMITER )
23
+ if ( xs . length === 1 ) {
24
+ return { code :0 , buffer :buffer }
25
+ }
26
+ callback ( xs . shift ( ) , n )
27
+ return recursiveParser ( n + 1 , xs . join ( DELIMITER ) , callback )
23
28
}
24
- const content = xs . shift ( )
25
-
26
- callback ( content , n )
27
- return recursiveParser ( n + 1 , xs . join ( '\n' ) , callback )
29
+ return recursiveParser
28
30
}
29
31
32
+
30
33
const createPromiseResult = exports . createPromiseResult = ( resolve , reject ) => {
31
34
return ( err , result ) => {
32
35
if ( err ) reject ( err )
@@ -38,11 +41,12 @@ class MessageParser{
38
41
constructor ( callback ) {
39
42
this . buffer = ''
40
43
this . callback = callback
44
+ this . recursiveParser = createRecuesiveParser ( 20 , '\n' )
41
45
}
42
46
run ( chunk ) {
43
47
this . buffer += chunk
44
48
while ( true ) {
45
- const res = recursiveParser ( 0 , this . buffer , this . callback )
49
+ const res = this . recursiveParser ( 0 , this . buffer , this . callback )
46
50
this . buffer = res . buffer
47
51
if ( res . code === 0 ) {
48
52
break ;
0 commit comments