@@ -38,40 +38,43 @@ class RKernel {
3838 const env = Object . create ( process . env ) ;
3939 env . LANG = 'en_US.UTF-8' ;
4040
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 ( ) ;
4757 } ) ;
48- socket . on ( 'end' , ( ) => {
49- console . log ( 'socket disconnected' ) ;
50- this . socket = undefined ;
51- } ) ;
52- server . close ( ) ;
53- } ) ;
5458
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 ;
6676 } ) ;
67- childProcess . on ( 'exit' , ( code , signal ) => {
68- console . log ( `R exited with code ${ code } ` ) ;
69- } ) ;
70- this . process = childProcess ;
71- return childProcess ;
7277 } ) ;
73-
74- return new Promise ( ( resolve ) => setTimeout ( resolve , 500 ) ) ;
7578 }
7679
7780 public stop ( ) {
0 commit comments