@@ -38,40 +38,43 @@ class RKernel {
38
38
const env = Object . create ( process . env ) ;
39
39
env . LANG = 'en_US.UTF-8' ;
40
40
41
- const server = net . createServer ( socket => {
42
- console . log ( 'socket started' ) ;
43
- this . socket = socket ;
44
- socket . on ( 'data' , ( chunk : Buffer ) => {
45
- const str = chunk . toString ( ) ;
46
- console . log ( `socket (${ socket . localAddress } :${ socket . localPort } ): ${ str } ` ) ;
41
+ return new Promise ( ( resolve , reject ) => {
42
+ const server = net . createServer ( socket => {
43
+ console . log ( 'socket connected' ) ;
44
+ this . socket = socket ;
45
+ resolve ( undefined ) ;
46
+
47
+ socket . on ( 'data' , ( chunk : Buffer ) => {
48
+ const str = chunk . toString ( ) ;
49
+ console . log ( `socket (${ socket . localAddress } :${ socket . localPort } ): ${ str } ` ) ;
50
+ } ) ;
51
+ socket . on ( 'end' , ( ) => {
52
+ console . log ( 'socket disconnected' ) ;
53
+ this . socket = undefined ;
54
+ reject ( undefined ) ;
55
+ } ) ;
56
+ server . close ( ) ;
47
57
} ) ;
48
- socket . on ( 'end' , ( ) => {
49
- console . log ( 'socket disconnected' ) ;
50
- this . socket = undefined ;
51
- } ) ;
52
- server . close ( ) ;
53
- } ) ;
54
58
55
- server . listen ( 0 , '127.0.0.1' , ( ) => {
56
- this . port = ( server . address ( ) as net . AddressInfo ) . port ;
57
- const childProcess = spawn ( 'R' , [ '--quiet' , '--slave' , '-f' , this . kernelScript , '--args' , `port=${ this . port } ` ] ,
58
- { cwd : this . cwd , env : env } ) ;
59
- childProcess . stderr . on ( 'data' , ( chunk : Buffer ) => {
60
- const str = chunk . toString ( ) ;
61
- console . log ( `R stderr (${ childProcess . pid } ): ${ str } ` ) ;
62
- } ) ;
63
- childProcess . stdout . on ( 'data' , ( chunk : Buffer ) => {
64
- const str = chunk . toString ( ) ;
65
- console . log ( `R stdout (${ childProcess . pid } ): ${ str } ` ) ;
59
+ server . listen ( 0 , '127.0.0.1' , ( ) => {
60
+ this . port = ( server . address ( ) as net . AddressInfo ) . port ;
61
+ const childProcess = spawn ( 'R' , [ '--quiet' , '--slave' , '-f' , this . kernelScript , '--args' , `port=${ this . port } ` ] ,
62
+ { cwd : this . cwd , env : env } ) ;
63
+ childProcess . stderr . on ( 'data' , ( chunk : Buffer ) => {
64
+ const str = chunk . toString ( ) ;
65
+ console . log ( `R stderr (${ childProcess . pid } ): ${ str } ` ) ;
66
+ } ) ;
67
+ childProcess . stdout . on ( 'data' , ( chunk : Buffer ) => {
68
+ const str = chunk . toString ( ) ;
69
+ console . log ( `R stdout (${ childProcess . pid } ): ${ str } ` ) ;
70
+ } ) ;
71
+ childProcess . on ( 'exit' , ( code , signal ) => {
72
+ console . log ( `R exited with code ${ code } ` ) ;
73
+ } ) ;
74
+ this . process = childProcess ;
75
+ return childProcess ;
66
76
} ) ;
67
- childProcess . on ( 'exit' , ( code , signal ) => {
68
- console . log ( `R exited with code ${ code } ` ) ;
69
- } ) ;
70
- this . process = childProcess ;
71
- return childProcess ;
72
77
} ) ;
73
-
74
- return new Promise ( ( resolve ) => setTimeout ( resolve , 500 ) ) ;
75
78
}
76
79
77
80
public stop ( ) {
0 commit comments