@@ -9,22 +9,28 @@ local({
99
1010 ls.str(env )
1111 while (TRUE ) {
12- cat(" Waiting\n " )
13- con <- socketConnection(host = " 127.0.0.1" , port = env $ port ,
12+ con <- try(socketConnection(host = " 127.0.0.1" , port = env $ port ,
1413 blocking = TRUE , server = TRUE ,
15- open = " r+" )
16- line <- readLines(con , n = 1 )
17- request <- jsonlite :: fromJSON(line )
18- cat(sprintf(" [%s] %s\n " ,
19- request $ time , request $ expr ))
20- expr <- parse(text = request $ expr )
21- res <- try(eval(expr , globalenv()), silent = TRUE )
22- str <- list (
23- type = if (inherits(res , " try-error" )) " error" else " output" ,
24- result = utils :: capture.output(print(res ))
25- )
26- result <- jsonlite :: toJSON(str , auto_unbox = TRUE , force = TRUE )
27- writeLines(result , con )
28- close(con )
14+ open = " r+" ), silent = TRUE )
15+ if (inherits(con , " try-error" )) {
16+ message(con )
17+ } else {
18+ tryCatch({
19+ line <- readLines(con , n = 1 )
20+ request <- jsonlite :: fromJSON(line )
21+ cat(sprintf(" [%s]\n %s\n " ,
22+ request $ time , request $ expr ))
23+ expr <- parse(text = request $ expr )
24+ res <- try(eval(expr , globalenv()), silent = TRUE )
25+ str <- list (
26+ type = if (inherits(res , " try-error" )) " error" else " output" ,
27+ result = utils :: capture.output(print(res ))
28+ )
29+ result <- jsonlite :: toJSON(str , auto_unbox = TRUE , force = TRUE )
30+ writeLines(result , con )
31+ }, error = function (e ) {
32+ message(e )
33+ }, finally = close(con ))
34+ }
2935 }
3036})
0 commit comments