@@ -7,7 +7,7 @@ import { StdioIpcHandler } from "../ipc";
7
7
import { ParsedArgs } from "vs/platform/environment/common/environment" ;
8
8
import { Emitter } from "@coder/events/src" ;
9
9
import { retry } from "@coder/ide/src/retry" ;
10
- import { logger , Level } from "@coder/logger" ;
10
+ import { logger , field , Level } from "@coder/logger" ;
11
11
12
12
export enum SharedProcessState {
13
13
Stopped ,
@@ -30,6 +30,7 @@ export class SharedProcess {
30
30
private readonly onStateEmitter = new Emitter < SharedProcessEvent > ( ) ;
31
31
public readonly onState = this . onStateEmitter . event ;
32
32
private readonly retryName = "Shared process" ;
33
+ private readonly logger = logger . named ( "shared" ) ;
33
34
34
35
public constructor (
35
36
private readonly userDataDir : string ,
@@ -65,12 +66,34 @@ export class SharedProcess {
65
66
state : SharedProcessState . Starting ,
66
67
} ) ;
67
68
let resolved : boolean = false ;
69
+ const maybeStop = ( error : string ) : void => {
70
+ if ( resolved ) {
71
+ return ;
72
+ }
73
+ this . setState ( {
74
+ error,
75
+ state : SharedProcessState . Stopped ,
76
+ } ) ;
77
+ if ( ! this . activeProcess ) {
78
+ return ;
79
+ }
80
+ this . activeProcess . kill ( ) ;
81
+ } ;
68
82
this . activeProcess = forkModule ( "vs/code/electron-browser/sharedProcess/sharedProcessMain" , [ ] , {
69
83
env : {
70
84
VSCODE_ALLOW_IO : "true" ,
71
85
VSCODE_LOGS : process . env . VSCODE_LOGS ,
72
86
} ,
73
87
} ) ;
88
+ if ( this . logger . level <= Level . Trace ) {
89
+ this . activeProcess . stdout . on ( "data" , ( data ) => {
90
+ this . logger . trace ( ( ) => [ "stdout" , field ( "data" , data . toString ( ) ) ] ) ;
91
+ } ) ;
92
+ }
93
+ this . activeProcess . on ( "error" , ( error ) => {
94
+ this . logger . error ( "error" , field ( "error" , error ) ) ;
95
+ maybeStop ( error . message ) ;
96
+ } ) ;
74
97
this . activeProcess . on ( "exit" , ( err ) => {
75
98
if ( this . _state !== SharedProcessState . Stopped ) {
76
99
this . setState ( {
@@ -92,7 +115,7 @@ export class SharedProcess {
92
115
"user-data-dir" : this . userDataDir ,
93
116
"extensions-dir" : extensionsDir ,
94
117
} ,
95
- logLevel : logger . level ,
118
+ logLevel : this . logger . level ,
96
119
sharedIPCHandle : this . socketPath ,
97
120
} ;
98
121
this . ipcHandler ! . send ( "handshake:hey there" , "" , data ) ;
@@ -105,16 +128,8 @@ export class SharedProcess {
105
128
} ) ;
106
129
} ) ;
107
130
this . activeProcess . stderr . on ( "data" , ( data ) => {
108
- if ( ! resolved ) {
109
- this . setState ( {
110
- error : data . toString ( ) ,
111
- state : SharedProcessState . Stopped ,
112
- } ) ;
113
- if ( ! this . activeProcess ) {
114
- return ;
115
- }
116
- this . activeProcess . kill ( ) ;
117
- }
131
+ this . logger . error ( "stderr" , field ( "data" , data . toString ( ) ) ) ;
132
+ maybeStop ( data . toString ( ) ) ;
118
133
} ) ;
119
134
}
120
135
0 commit comments