@@ -6,27 +6,35 @@ import { PluginMessage } from './entities/message';
66
77export class PluginIpcBridge {
88
9- async createProcess ( directory : string , name : string ) : Promise < ChildProcess > {
10- return fork (
9+ process : ChildProcess ;
10+
11+ constructor ( process : ChildProcess ) {
12+ this . process = process ;
13+ }
14+
15+ static async create ( directory : string , name : string ) : Promise < PluginIpcBridge > {
16+ const process = await fork (
1117 directory + '/' + name + config . defaultPluginEntryPoint ,
1218 [ ] ,
1319 { execArgv : [ '-r' , 'ts-node/register' ] , silent : true } ,
1420 ) ;
21+
22+ return new PluginIpcBridge ( process ) ;
1523 }
1624
17- killPlugin ( process : ChildProcess ) : void {
18- process . kill ( ) ;
25+ killPlugin ( ) : void {
26+ this . process . kill ( ) ;
1927 }
2028
21- async sendMessageForResult ( process : ChildProcess , message : PluginMessage ) : Promise < unknown > {
29+ async sendMessageForResult ( message : PluginMessage ) : Promise < unknown > {
2230 return new Promise ( ( resolve , reject ) => {
2331 const timer = setTimeout ( ( ) => {
24- process . kill ( ) ;
32+ this . process . kill ( ) ;
2533 reject ( new Error ( `Plugin did not respond in 10s to call: ${ message . cmd } ` ) )
2634 } , 10_000 ) ;
2735
2836 const errorListener = ( error : Buffer ) => {
29- process . kill ( ) ;
37+ this . process . kill ( ) ;
3038 reject ( error . toString ( ) ) ;
3139 }
3240
@@ -39,20 +47,20 @@ export class PluginIpcBridge {
3947
4048 if ( incomingMessage . cmd === this . getResultFunctionName ( message . cmd ) ) {
4149 clearTimeout ( timer ) ;
42- process . removeListener ( 'message' , messageListener ) ;
43- process . removeListener ( 'error' , errorListener ) ;
50+ this . process . removeListener ( 'message' , messageListener ) ;
51+ this . process . removeListener ( 'error' , errorListener ) ;
4452 resolve ( incomingMessage . data ) ;
4553 }
4654 } ;
4755
48- process . on ( 'message' , messageListener ) ;
49- process . stderr ! . on ( 'data' , errorListener ) ;
50- process . send ( message ) ;
56+ this . process . on ( 'message' , messageListener ) ;
57+ this . process . stderr ! . on ( 'data' , errorListener ) ;
58+ this . process . send ( message ) ;
5159 } ) ;
5260 }
5361
54- sendMessage ( process : ChildProcess , message : PluginMessage ) : void {
55- process . send ( message ) ;
62+ sendMessage ( message : PluginMessage ) : void {
63+ this . process . send ( message ) ;
5664 }
5765
5866 private getResultFunctionName ( rpcFunctionName : string ) : string {
0 commit comments